openapi-directory
Version:
Building & bundling https://github.com/APIs-guru/openapi-directory for easy use from JS
1 lines • 343 kB
JSON
{"openapi":"3.0.0","servers":[{"url":"/api/v2"}],"info":{"contact":{"url":"https://ix-api.net"},"description":"\nThis API allows to config/change/delete Internet Exchange services.\n\n# Filters\n\nWhen querying collections, the provided query parameters\nare validated. Unknown query parameters are ignored.\nProviding invalid filter values should yield a validation error.\n","title":"IX-API","version":"2.1.0","x-apisguru-categories":["security"],"x-logo":{"url":"https://ix-api.net/ix-api/icons/cropped-favicon-1-180x180.png"},"x-origin":[{"format":"openapi","url":"https://docs.ix-api.net/v2/ix-api-latest.json","version":"3.0"}],"x-providerName":"ix-api.net"},"security":[{"Bearer":[]}],"tags":[{"description":"An `Account` represents an individual customer account, organization\nor partner involved with the IXP. They are used to consume\nservices from an IXP.\n\nAccounts can have a hierarchy, i.e. an\naccount can have sub-accounts. The max-depth of\nthe account-hierarchy may vary by implementer, but it's safe to\nassume an account can have sub-accounts.\n\nEach `Account` has a state. Only `Account`s in state `production`\nor `production_state_pending` are ready to consume services.\n\nThere are `Contact`s associated with each account. Contacts can\nbe assigned for `Role`s via `RoleAssignment`s. Depending on the\nIXP and the services the account wants to use, contacts with\nspecific roles may be required.\nA contact with role `legal` is mandatory for an account to become\noperational.\n\nOnly accounts with `billing_information` present can be used\nas a `billing_account`.","name":"accounts"},{"description":"Open an authorized session with the IX-API. This is equivalent to\na 'login' endpoint.\n\nUpon success, you will receive an `access_token` and\na `refreh_token`. Both are JWTs and have limited lifetimes. You\ncan get information like their expiry time directly by parsing\nthe tokens.\n\nUse the `access_token` as `Bearer` in your `Authorization` header\nfor getting access to the API.\n\nWhen the session (i.e. the `access_token`) expires, use the\n`refresh_token` (if it's not yet expired) with the\n`refresh`-endpoint to reauthenticate and get a fresh `access_token`.","name":"auth"},{"description":"A `Connection` is a functional group of physical connections\ncollected together into a LAG (aka trunk).\n\nA `connection` with only one `port` can be also configured as\nstandalone which means no LAG configuration on the switch.","name":"connections"},{"description":"A `Contact` is a role undertaking a specific responsibility\nwithin an account, typically a department or agent of the\ncustomer company.\n\n`Contact`s are assigned multiple roles by `RoleAssignment`s.\n\nA contact is bound to the account by the `consuming_account` property.","name":"contacts"},{"description":"A `Device` is a network hardware device, typically a switch, which\nis located at a specified facility and inside a `PointOfPresence`.\nPoPs.\n\nThey may be physically located at their related PoPs.","name":"devices"},{"description":"A `Facility` is a data centre, with a determined physical address,\nfrom which a defined set of PoPs can be accessed","name":"facilities"},{"description":"This endpoint provides a health status response implementing\nhttps://tools.ietf.org/id/draft-inadarei-api-health-check-04.html\n\nThe schema describes the toplevel fields - however the\nimplementation of health checks is up to the IX-API implementor.","name":"health"},{"description":"This endpoint provides information about the IX-API\nimplementation of the exchange.\n\nYou can find the implemented schema version and\nsupported types and operations here.","name":"implementation"},{"description":"An `IP` is a IPv4 or 6 addresses, with a given validity period.\nSome services require IP addresses to work.\n\nWhen you are joining an `exchange_lan` network service\nfor example, addresses on the peering lan will be assigned\nto you.","name":"ips"},{"description":"A `MAC` is a MAC addresses with a given validity period.\n\nSome services require MAC addresses to work.\nPlease note that only *unicast* MAC addresses are allowed.\nYou are not alllowed to use multicast or broadcast addresses.\n\nThe address itself can not be updated after creation.\nHowever: It can be expired by changing the `valid_not_before`\nand `valid_not_after` properties.","name":"macs"},{"description":"A `MemberJoiningRule` defines a rule to allow or deny access for\nan `Account` to a access a `NetworkService`.\n\nFurthermore, some `NetworkService`s may only be visible if the\nquerying account is listed in an allow rule.","name":"member-joining-rules"},{"description":"Services are provided directly on or can be consumed\nfrom inside a `MetroAreaNetwork`.\n\nAccounts can indicate their presence in a `MetroAreaNetwork`\nto others by adding a list of ids.","name":"metro-area-networks"},{"description":"A MetroArea exists if a `MetroAreaNetwork` or `Facility` is\npresent in it.","name":"metro-areas"},{"description":"A `NetworkFeatureConfig` is a configuration for\nusing a `NetworkFeature`.\n\nFor certain `NetworkFeature`s, which are marked as required,\none `NetworkFeatureConfig needs to be created in order to move\nthe `NetworkServiceConfig` into `production`.","name":"network-feature-configs"},{"description":"A `NetworkFeature` represents additional funcationality of a single\n`NetworkService`.\n\nFor certain `NetworkFeature`s, which are marked as required,\none `NetworkFeatureConfig needs to be created in order to move\nthe `NetworkServiceConfig` into `production`.","name":"network-features"},{"description":"A `NetworkServiceConfig` is a customer's configuration for usage\nof a `NetworkService`, e.g. the configuration of a (subset of a)\nconnection for that customer's traffic\n\nThe `type` of the config determines the service you are\nconfiguring.\n\nYou can find the services available to you on the platform,\nby querying the `NetworkService`s resource.\n\nFor certain `NetworkFeature`s, which are marked as required,\none `NetworkFeatureConfig needs to be created in order to move\nthe `NetworkServiceConfig` into `production`.","name":"network-service-configs"},{"description":"A `NetworkService` represents an instance of a `ProductOffering`.\n\nThe exchange lan is a special case in which the `NetworkService` is\nmanaged by the exchange.\n\nAll other `NetworkService`s are created and managed by an `Account`.","name":"network-services"},{"description":"A `PointOfPresence` is a technical installation within a Facility\nwhich is connected to a single `MetroAreaNetwork`. A single\n`MetroAreaNetwork`, however, may have multiple `PointOfPresence`s.","name":"pops"},{"description":"A `Port` is the point at which subscriber and\nIXP networks meet. A port is always associated with\na `device` and `pop`, has a `speed` and a `media_type`.","name":"ports"},{"description":"A `ProductOffering` is an offer made by an exchange\nto be consumed by a client.","name":"product-offerings"},{"description":"A `Contact` can be assigned to many `Roles`.","name":"role-assignments"},{"description":"A `Role` enables a `Contact` to act for a specific purpose.\n\nWell-defined roles are: `implementation`, `noc` and `peering`.\nAn implementer may choose to support them or not or may add\nadditional ones.","name":"roles"}],"paths":{"/accounts":{"get":{"description":"Retrieve a list of `Account`s.\n\nThis includes all accounts the currently authorized account\nis managing and the current account itself.","operationId":"accounts_list","parameters":[{"description":"Filter by id","explode":false,"in":"query","name":"id","required":false,"schema":{"example":"id1,id2,id3","items":{"type":"string"},"type":"array"},"style":"form"},{"description":"Filter by state","in":"query","name":"state","required":false,"schema":{"type":"string"}},{"description":"Filter by state__is_not","in":"query","name":"state__is_not","required":false,"schema":{"type":"string"}},{"description":"Filter by managing_account","in":"query","name":"managing_account","required":false,"schema":{"type":"string"}},{"description":"Filter by billable","in":"query","name":"billable","required":false,"schema":{"type":"integer"}},{"description":"Filter by external_ref","in":"query","name":"external_ref","required":false,"schema":{"type":"string"}},{"description":"Filter by name","in":"query","name":"name","required":false,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/Account"},"type":"array"}}},"description":"List of: Account"},"400":{"content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/ProblemResponse"},{"properties":{"status":{"example":400},"title":{"example":"Some fields did not validate."},"type":{"enum":["https://errors.ix-api.net/v2/validation-error.html"],"type":"string"}},"type":"object"},{}]}}},"description":"ValidationError"},"401":{"content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/ProblemResponse"},{"properties":{"status":{"example":401},"title":{"example":"Authentication Credentials Invalid"},"type":{"enum":["https://errors.ix-api.net/v2/authentication-error.html","https://errors.ix-api.net/v2/signature-expired.html"],"type":"string"}},"type":"object"},{}]}}},"description":"Authentication"},"403":{"content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/ProblemResponse"},{"properties":{"status":{"example":403},"title":{"example":"You do not have permission to perform this action."},"type":{"enum":["https://errors.ix-api.net/v2/permission-denied.html"],"type":"string"}},"type":"object"},{}]}}},"description":"PermissionDenied"}},"tags":["accounts"]},"post":{"description":"Create a new account.","operationId":"accounts_create","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AccountRequest"}}},"description":"Account Request"},"responses":{"201":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Account"}}},"description":"Account"},"400":{"content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/ProblemResponse"},{"properties":{"status":{"example":400},"title":{"example":"Some fields did not validate."},"type":{"enum":["https://errors.ix-api.net/v2/validation-error.html"],"type":"string"}},"type":"object"},{}]}}},"description":"ValidationError"},"401":{"content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/ProblemResponse"},{"properties":{"status":{"example":401},"title":{"example":"Authentication Credentials Invalid"},"type":{"enum":["https://errors.ix-api.net/v2/authentication-error.html","https://errors.ix-api.net/v2/signature-expired.html"],"type":"string"}},"type":"object"},{}]}}},"description":"Authentication"},"403":{"content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/ProblemResponse"},{"properties":{"status":{"example":403},"title":{"example":"You do not have permission to perform this action."},"type":{"enum":["https://errors.ix-api.net/v2/permission-denied.html"],"type":"string"}},"type":"object"},{}]}}},"description":"PermissionDenied"}},"tags":["accounts"]}},"/accounts/{id}":{"delete":{"description":"Accounts can be deleted, when all services and configs\nare decommissioned or the account is not longer referenced\ne.g. as a `managing_account` or `billing_account`.\n\nDeleting an account will cascade to `contacts` and\n`role-assignments`.\n\nThe request will immediately fail, if the above preconditions\nare not met.","operationId":"accounts_destroy","parameters":[{"description":"Get by id","in":"path","name":"id","required":true,"schema":{"description":"","title":"","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Account"}}},"description":"Account"},"401":{"content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/ProblemResponse"},{"properties":{"status":{"example":401},"title":{"example":"Authentication Credentials Invalid"},"type":{"enum":["https://errors.ix-api.net/v2/authentication-error.html","https://errors.ix-api.net/v2/signature-expired.html"],"type":"string"}},"type":"object"},{}]}}},"description":"Authentication"},"403":{"content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/ProblemResponse"},{"properties":{"status":{"example":403},"title":{"example":"You do not have permission to perform this action."},"type":{"enum":["https://errors.ix-api.net/v2/permission-denied.html"],"type":"string"}},"type":"object"},{}]}}},"description":"PermissionDenied"},"404":{"content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/ProblemResponse"},{"properties":{"status":{"example":404},"title":{"example":"Not found."},"type":{"enum":["https://errors.ix-api.net/v2/not-found.html"],"type":"string"}},"type":"object"},{}]}}},"description":"NotFound"}},"tags":["accounts"]},"get":{"description":"Get a single account.","operationId":"accounts_read","parameters":[{"description":"Get by id","in":"path","name":"id","required":true,"schema":{"description":"","title":"","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Account"}}},"description":"Account"},"401":{"content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/ProblemResponse"},{"properties":{"status":{"example":401},"title":{"example":"Authentication Credentials Invalid"},"type":{"enum":["https://errors.ix-api.net/v2/authentication-error.html","https://errors.ix-api.net/v2/signature-expired.html"],"type":"string"}},"type":"object"},{}]}}},"description":"Authentication"},"403":{"content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/ProblemResponse"},{"properties":{"status":{"example":403},"title":{"example":"You do not have permission to perform this action."},"type":{"enum":["https://errors.ix-api.net/v2/permission-denied.html"],"type":"string"}},"type":"object"},{}]}}},"description":"PermissionDenied"},"404":{"content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/ProblemResponse"},{"properties":{"status":{"example":404},"title":{"example":"Not found."},"type":{"enum":["https://errors.ix-api.net/v2/not-found.html"],"type":"string"}},"type":"object"},{}]}}},"description":"NotFound"}},"tags":["accounts"]},"patch":{"description":"Update parts of an account.","operationId":"accounts_partial_update","parameters":[{"description":"Get by id","in":"path","name":"id","required":true,"schema":{"description":"","title":"","type":"string"}}],"requestBody":{"content":{"application/merge-patch+json":{"schema":{"$ref":"#/components/schemas/AccountUpdatePartial"}}},"description":"Account Update Request"},"responses":{"202":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Account"}}},"description":"Account"},"400":{"content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/ProblemResponse"},{"properties":{"status":{"example":400},"title":{"example":"Some fields did not validate."},"type":{"enum":["https://errors.ix-api.net/v2/validation-error.html"],"type":"string"}},"type":"object"},{}]}}},"description":"ValidationError"},"401":{"content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/ProblemResponse"},{"properties":{"status":{"example":401},"title":{"example":"Authentication Credentials Invalid"},"type":{"enum":["https://errors.ix-api.net/v2/authentication-error.html","https://errors.ix-api.net/v2/signature-expired.html"],"type":"string"}},"type":"object"},{}]}}},"description":"Authentication"},"403":{"content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/ProblemResponse"},{"properties":{"status":{"example":403},"title":{"example":"You do not have permission to perform this action."},"type":{"enum":["https://errors.ix-api.net/v2/permission-denied.html"],"type":"string"}},"type":"object"},{}]}}},"description":"PermissionDenied"},"404":{"content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/ProblemResponse"},{"properties":{"status":{"example":404},"title":{"example":"Not found."},"type":{"enum":["https://errors.ix-api.net/v2/not-found.html"],"type":"string"}},"type":"object"},{}]}}},"description":"NotFound"}},"tags":["accounts"]},"put":{"description":"Update the entire account.","operationId":"accounts_update","parameters":[{"description":"Get by id","in":"path","name":"id","required":true,"schema":{"description":"","title":"","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AccountUpdate"}}},"description":"Account Update Request"},"responses":{"202":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Account"}}},"description":"Account"},"400":{"content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/ProblemResponse"},{"properties":{"status":{"example":400},"title":{"example":"Some fields did not validate."},"type":{"enum":["https://errors.ix-api.net/v2/validation-error.html"],"type":"string"}},"type":"object"},{}]}}},"description":"ValidationError"},"401":{"content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/ProblemResponse"},{"properties":{"status":{"example":401},"title":{"example":"Authentication Credentials Invalid"},"type":{"enum":["https://errors.ix-api.net/v2/authentication-error.html","https://errors.ix-api.net/v2/signature-expired.html"],"type":"string"}},"type":"object"},{}]}}},"description":"Authentication"},"403":{"content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/ProblemResponse"},{"properties":{"status":{"example":403},"title":{"example":"You do not have permission to perform this action."},"type":{"enum":["https://errors.ix-api.net/v2/permission-denied.html"],"type":"string"}},"type":"object"},{}]}}},"description":"PermissionDenied"},"404":{"content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/ProblemResponse"},{"properties":{"status":{"example":404},"title":{"example":"Not found."},"type":{"enum":["https://errors.ix-api.net/v2/not-found.html"],"type":"string"}},"type":"object"},{}]}}},"description":"NotFound"}},"tags":["accounts"]}},"/auth/refresh":{"post":{"description":"Reauthenticate the API user, issue a new `access_token`\nand `refresh_token` pair by providing the `refresh_token`\nin the request body.","operationId":"auth_token_refresh","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RefreshTokenRequest"}}},"description":"RefreshTokenRequest"},"responses":{"201":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AuthToken"}}},"description":"AuthToken"},"400":{"content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/ProblemResponse"},{"properties":{"status":{"example":400},"title":{"example":"Some fields did not validate."},"type":{"enum":["https://errors.ix-api.net/v2/validation-error.html"],"type":"string"}},"type":"object"},{}]}}},"description":"ValidationError"},"401":{"content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/ProblemResponse"},{"properties":{"status":{"example":401},"title":{"example":"Authentication Credentials Invalid"},"type":{"enum":["https://errors.ix-api.net/v2/authentication-error.html","https://errors.ix-api.net/v2/signature-expired.html","https://errors.ix-api.net/v2/not-authenticated.html"],"type":"string"}},"type":"object"},{}]}}},"description":"Authentication"}},"security":[],"tags":["auth"]}},"/auth/token":{"post":{"description":"Authenticate an API user identified by `api_key` and\n`api_secret`.","operationId":"auth_token_create","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AuthTokenRequest"}}},"description":"AuthTokenRequest"},"responses":{"201":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AuthToken"}}},"description":"AuthToken"},"400":{"content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/ProblemResponse"},{"properties":{"status":{"example":400},"title":{"example":"Some fields did not validate."},"type":{"enum":["https://errors.ix-api.net/v2/validation-error.html"],"type":"string"}},"type":"object"},{}]}}},"description":"ValidationError"},"401":{"content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/ProblemResponse"},{"properties":{"status":{"example":401},"title":{"example":"Authentication Credentials Invalid"},"type":{"enum":["https://errors.ix-api.net/v2/authentication-error.html","https://errors.ix-api.net/v2/signature-expired.html","https://errors.ix-api.net/v2/not-authenticated.html"],"type":"string"}},"type":"object"},{}]}}},"description":"Authentication"}},"security":[],"tags":["auth"]}},"/connections":{"get":{"description":"List all `connection`s.","operationId":"connections_list","parameters":[{"description":"Filter by id","explode":false,"in":"query","name":"id","required":false,"schema":{"example":"id1,id2,id3","items":{"type":"string"},"type":"array"},"style":"form"},{"description":"Filter by state","in":"query","name":"state","required":false,"schema":{"type":"string"}},{"description":"Filter by state__is_not","in":"query","name":"state__is_not","required":false,"schema":{"type":"string"}},{"description":"Filter by mode","in":"query","name":"mode","required":false,"schema":{"type":"string"}},{"description":"Filter by mode__is_not","in":"query","name":"mode__is_not","required":false,"schema":{"type":"string"}},{"description":"Filter by name","in":"query","name":"name","required":false,"schema":{"type":"string"}},{"description":"Filter by metro_area_network","in":"query","name":"metro_area_network","required":false,"schema":{"type":"string"}},{"description":"Filter by pop","in":"query","name":"pop","required":false,"schema":{"type":"string"}},{"description":"Filter by facility","in":"query","name":"facility","required":false,"schema":{"type":"string"}},{"description":"Filter by external_ref","in":"query","name":"external_ref","required":false,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/Connection"},"type":"array"}}},"description":"List of: Connection"},"400":{"content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/ProblemResponse"},{"properties":{"status":{"example":400},"title":{"example":"Some fields did not validate."},"type":{"enum":["https://errors.ix-api.net/v2/validation-error.html"],"type":"string"}},"type":"object"},{}]}}},"description":"ValidationError"},"401":{"content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/ProblemResponse"},{"properties":{"status":{"example":401},"title":{"example":"Authentication Credentials Invalid"},"type":{"enum":["https://errors.ix-api.net/v2/authentication-error.html","https://errors.ix-api.net/v2/signature-expired.html"],"type":"string"}},"type":"object"},{}]}}},"description":"Authentication"},"403":{"content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/ProblemResponse"},{"properties":{"status":{"example":403},"title":{"example":"You do not have permission to perform this action."},"type":{"enum":["https://errors.ix-api.net/v2/permission-denied.html"],"type":"string"}},"type":"object"},{}]}}},"description":"PermissionDenied"}},"tags":["connections"]}},"/connections/{id}":{"get":{"description":"Read a `connection`.","operationId":"connections_read","parameters":[{"description":"Get by id","in":"path","name":"id","required":true,"schema":{"description":"","title":"","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Connection"}}},"description":"Connection"},"401":{"content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/ProblemResponse"},{"properties":{"status":{"example":401},"title":{"example":"Authentication Credentials Invalid"},"type":{"enum":["https://errors.ix-api.net/v2/authentication-error.html","https://errors.ix-api.net/v2/signature-expired.html"],"type":"string"}},"type":"object"},{}]}}},"description":"Authentication"},"403":{"content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/ProblemResponse"},{"properties":{"status":{"example":403},"title":{"example":"You do not have permission to perform this action."},"type":{"enum":["https://errors.ix-api.net/v2/permission-denied.html"],"type":"string"}},"type":"object"},{}]}}},"description":"PermissionDenied"},"404":{"content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/ProblemResponse"},{"properties":{"status":{"example":404},"title":{"example":"Not found."},"type":{"enum":["https://errors.ix-api.net/v2/not-found.html"],"type":"string"}},"type":"object"},{}]}}},"description":"NotFound"}},"tags":["connections"]}},"/contacts":{"get":{"description":"List available contacts managed by the authorized account.","operationId":"contacts_list","parameters":[{"description":"Filter by id","explode":false,"in":"query","name":"id","required":false,"schema":{"example":"id1,id2,id3","items":{"type":"string"},"type":"array"},"style":"form"},{"description":"Filter by managing_account","in":"query","name":"managing_account","required":false,"schema":{"type":"string"}},{"description":"Filter by consuming_account","in":"query","name":"consuming_account","required":false,"schema":{"type":"string"}},{"description":"Filter by external_ref","in":"query","name":"external_ref","required":false,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/Contact"},"type":"array"}}},"description":"List of: Contact"},"400":{"content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/ProblemResponse"},{"properties":{"status":{"example":400},"title":{"example":"Some fields did not validate."},"type":{"enum":["https://errors.ix-api.net/v2/validation-error.html"],"type":"string"}},"type":"object"},{}]}}},"description":"ValidationError"},"401":{"content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/ProblemResponse"},{"properties":{"status":{"example":401},"title":{"example":"Authentication Credentials Invalid"},"type":{"enum":["https://errors.ix-api.net/v2/authentication-error.html","https://errors.ix-api.net/v2/signature-expired.html"],"type":"string"}},"type":"object"},{}]}}},"description":"Authentication"},"403":{"content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/ProblemResponse"},{"properties":{"status":{"example":403},"title":{"example":"You do not have permission to perform this action."},"type":{"enum":["https://errors.ix-api.net/v2/permission-denied.html"],"type":"string"}},"type":"object"},{}]}}},"description":"PermissionDenied"}},"tags":["contacts"]},"post":{"description":"Create a new contact.","operationId":"contacts_create","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ContactRequest"}}},"description":"A contact creation request"},"responses":{"201":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Contact"}}},"description":"Contact"},"400":{"content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/ProblemResponse"},{"properties":{"status":{"example":400},"title":{"example":"Some fields did not validate."},"type":{"enum":["https://errors.ix-api.net/v2/validation-error.html"],"type":"string"}},"type":"object"},{}]}}},"description":"ValidationError"},"401":{"content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/ProblemResponse"},{"properties":{"status":{"example":401},"title":{"example":"Authentication Credentials Invalid"},"type":{"enum":["https://errors.ix-api.net/v2/authentication-error.html","https://errors.ix-api.net/v2/signature-expired.html"],"type":"string"}},"type":"object"},{}]}}},"description":"Authentication"},"403":{"content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/ProblemResponse"},{"properties":{"status":{"example":403},"title":{"example":"You do not have permission to perform this action."},"type":{"enum":["https://errors.ix-api.net/v2/permission-denied.html"],"type":"string"}},"type":"object"},{}]}}},"description":"PermissionDenied"}},"tags":["contacts"]}},"/contacts/{id}":{"delete":{"description":"Remove a contact.\n\nPlease note, that a contact can only be removed if\nit is not longer in use in a network service or config\nthrough a role assignment.","operationId":"contacts_destroy","parameters":[{"description":"Get by id","in":"path","name":"id","required":true,"schema":{"description":"","title":"","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Contact"}}},"description":"Contact"},"400":{"content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/ProblemResponse"},{"properties":{"status":{"example":400},"title":{"example":"Unable to fulfill your request."},"type":{"enum":["https://errors.ix-api.net/v2/unable-to-fulfill.html"],"type":"string"}},"type":"object"},{}]}}},"description":"UnableToFulfill"},"401":{"content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/ProblemResponse"},{"properties":{"status":{"example":401},"title":{"example":"Authentication Credentials Invalid"},"type":{"enum":["https://errors.ix-api.net/v2/authentication-error.html","https://errors.ix-api.net/v2/signature-expired.html"],"type":"string"}},"type":"object"},{}]}}},"description":"Authentication"},"403":{"content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/ProblemResponse"},{"properties":{"status":{"example":403},"title":{"example":"You do not have permission to perform this action."},"type":{"enum":["https://errors.ix-api.net/v2/permission-denied.html"],"type":"string"}},"type":"object"},{}]}}},"description":"PermissionDenied"},"404":{"content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/ProblemResponse"},{"properties":{"status":{"example":404},"title":{"example":"Not found."},"type":{"enum":["https://errors.ix-api.net/v2/not-found.html"],"type":"string"}},"type":"object"},{}]}}},"description":"NotFound"}},"tags":["contacts"]},"get":{"description":"Get a contact by it's id","operationId":"contacts_read","parameters":[{"description":"Get by id","in":"path","name":"id","required":true,"schema":{"description":"","title":"","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Contact"}}},"description":"Contact"},"401":{"content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/ProblemResponse"},{"properties":{"status":{"example":401},"title":{"example":"Authentication Credentials Invalid"},"type":{"enum":["https://errors.ix-api.net/v2/authentication-error.html","https://errors.ix-api.net/v2/signature-expired.html"],"type":"string"}},"type":"object"},{}]}}},"description":"Authentication"},"403":{"content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/ProblemResponse"},{"properties":{"status":{"example":403},"title":{"example":"You do not have permission to perform this action."},"type":{"enum":["https://errors.ix-api.net/v2/permission-denied.html"],"type":"string"}},"type":"object"},{}]}}},"description":"PermissionDenied"},"404":{"content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/ProblemResponse"},{"properties":{"status":{"example":404},"title":{"example":"Not found."},"type":{"enum":["https://errors.ix-api.net/v2/not-found.html"],"type":"string"}},"type":"object"},{}]}}},"description":"NotFound"}},"tags":["contacts"]},"patch":{"description":"Update parts of a contact","operationId":"contacts_partial_update","parameters":[{"description":"Get by id","in":"path","name":"id","required":true,"schema":{"description":"","title":"","type":"string"}}],"requestBody":{"content":{"application/merge-patch+json":{"schema":{"$ref":"#/components/schemas/ContactRequestPartial"}}},"description":"A contact creation request"},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Contact"}}},"description":"Contact"},"400":{"content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/ProblemResponse"},{"properties":{"status":{"example":400},"title":{"example":"Some fields did not validate."},"type":{"enum":["https://errors.ix-api.net/v2/validation-error.html"],"type":"string"}},"type":"object"},{}]}}},"description":"ValidationError"},"401":{"content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/ProblemResponse"},{"properties":{"status":{"example":401},"title":{"example":"Authentication Credentials Invalid"},"type":{"enum":["https://errors.ix-api.net/v2/authentication-error.html","https://errors.ix-api.net/v2/signature-expired.html"],"type":"string"}},"type":"object"},{}]}}},"description":"Authentication"},"403":{"content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/ProblemResponse"},{"properties":{"status":{"example":403},"title":{"example":"You do not have permission to perform this action."},"type":{"enum":["https://errors.ix-api.net/v2/permission-denied.html"],"type":"string"}},"type":"object"},{}]}}},"description":"PermissionDenied"},"404":{"content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/ProblemResponse"},{"properties":{"status":{"example":404},"title":{"example":"Not found."},"type":{"enum":["https://errors.ix-api.net/v2/not-found.html"],"type":"string"}},"type":"object"},{}]}}},"description":"NotFound"}},"tags":["contacts"]},"put":{"description":"Update a contact","operationId":"contacts_update","parameters":[{"description":"Get by id","in":"path","name":"id","required":true,"schema":{"description":"","title":"","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ContactRequest"}}},"description":"A contact creation request"},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Contact"}}},"description":"Contact"},"400":{"content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/ProblemResponse"},{"properties":{"status":{"example":400},"title":{"example":"Some fields did not validate."},"type":{"enum":["https://errors.ix-api.net/v2/validation-error.html"],"type":"string"}},"type":"object"},{}]}}},"description":"ValidationError"},"401":{"content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/ProblemResponse"},{"properties":{"status":{"example":401},"title":{"example":"Authentication Credentials Invalid"},"type":{"enum":["https://errors.ix-api.net/v2/authentication-error.html","https://errors.ix-api.net/v2/signature-expired.html"],"type":"string"}},"type":"object"},{}]}}},"description":"Authentication"},"403":{"content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/ProblemResponse"},{"properties":{"status":{"example":403},"title":{"example":"You do not have permission to perform this action."},"type":{"enum":["https://errors.ix-api.net/v2/permission-denied.html"],"type":"string"}},"type":"object"},{}]}}},"description":"PermissionDenied"},"404":{"content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/ProblemResponse"},{"properties":{"status":{"example":404},"title":{"example":"Not found."},"type":{"enum":["https://errors.ix-api.net/v2/not-found.html"],"type":"string"}},"type":"object"},{}]}}},"description":"NotFound"}},"tags":["contacts"]}},"/devices":{"get":{"description":"List available devices","operationId":"devices_list","parameters":[{"description":"Filter by id","explode":false,"in":"query","name":"id","required":false,"schema":{"example":"id1,id2,id3","items":{"type":"string"},"type":"array"},"style":"form"},{"description":"Filter by name","in":"query","name":"name","required":false,"schema":{"type":"string"}},{"description":"Filter by capability_media_type","in":"query","name":"capability_media_type","required":false,"schema":{"type":"string"}},{"description":"Filter by capability_speed","in":"query","name":"capability_speed","required":false,"schema":{"type":"integer"}},{"description":"Filter by capability_speed__lt","in":"query","name":"capability_speed__lt","required":false,"schema":{"type":"integer"}},{"description":"Filter by capability_speed__lte","in":"query","name":"capability_speed__lte","required":false,"schema":{"type":"integer"}},{"description":"Filter by capability_speed__gt","in":"query","name":"capability_speed__gt","required":false,"schema":{"type":"integer"}},{"description":"Filter by capability_speed__gte","in":"query","name":"capability_speed__gte","required":false,"schema":{"type":"integer"}},{"description":"Filter by facility","in":"query","name":"facility","required":false,"schema":{"type":"string"}},{"description":"Filter by pop","in":"query","name":"pop","required":false,"schema":{"type":"string"}},{"description":"Filter by metro_area_network","in":"query","name":"metro_area_network","required":false,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/Device"},"type":"array"}}},"description":"List of: Device"},"400":{"content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/ProblemResponse"},{"properties":{"status":{"example":400},"title":{"example":"Some fields did not validate."},"type":{"enum":["https://errors.ix-api.net/v2/validation-error.html"],"type":"string"}},"type":"object"},{}]}}},"description":"ValidationError"},"401":{"content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/ProblemResponse"},{"properties":{"status":{"example":401},"title":{"example":"Authentication Credentials Invalid"},"type":{"enum":["https://errors.ix-api.net/v2/authentication-error.html","https://errors.ix-api.net/v2/signature-expired.html"],"type":"string"}},"type":"object"},{}]}}},"description":"Authentication"},"403":{"content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/ProblemResponse"},{"properties":{"status":{"example":403},"title":{"example":"You do not have permission to perform this action."},"type":{"enum":["https://errors.ix-api.net/v2/permission-denied.html"],"type":"string"}},"type":"object"},{}]}}},"description":"PermissionDenied"}},"tags":["devices"]}},"/devices/{id}":{"get":{"description":"Get a specific device identified by id","operationId":"devices_read","parameters":[{"description":"Get by id","in":"path","name":"id","required":true,"schema":{"description":"","title":"","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Device"}}},"description":"Device"},"401":{"content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/ProblemResponse"},{"properties":{"status":{"example":401},"title":{"example":"Authentication Credentials Invalid"},"type":{"enum":["https://errors.ix-api.net/v2/authentication-error.html","https://errors.ix-api.net/v2/signature-expired.html"],"type":"string"}},"type":"object"},{}]}}},"description":"Authentication"},"403":{"content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/ProblemResponse"},{"properties":{"status":{"example":403},"title":{"example":"You do not have permission to perform this action."},"type":{"enum":["https://errors.ix-api.net/v2/permission-denied.html"],"type":"string"}},"type":"object"},{}]}}},"description":"PermissionDenied"},"404":{"content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/ProblemResponse"},{"properties":{"status":{"example":404},"title":{"example":"Not found."},"type":{"enum":["https://errors.ix-api.net/v2/not-found.html"],"type":"string"}},"type":"object"},{}]}}},"description":"NotFound"}},"tags":["devices"]}},"/facilities":{"get":{"description":"Get a (filtered) list of `facilities`.","operationId":"facilities_list","parameters":[{"description":"Filter by id","explode":false,"in":"query","name":"id","required":false,"schema":{"example":"id1,id2,id3","items":{"type":"string"},"type":"array"},"style":"form"},{"description":"Filter by capability_media_type","in":"query","name":"capability_media_type","required":false,"schema":{"type":"string"}},{"description":"Filter by capability_speed","in":"query","name":"capability_speed","required":false,"schema":{"type":"integer"}},{"description":"Filter by capability_speed__lt","in":"query","name":"capability_speed__lt","required":false,"schema":{"type":"integer"}},{"description":"Filter by capability_speed__lte","in":"query","name":"capability_speed__lte","required":false,"schema":{"type":"integer"}},{"description":"Filter by capability_speed__gt","in":"query","name":"capability_speed__gt","required":false,"schema":{"type":"integer"}},{"description":"Filter by capability_speed__gte","in":"query","name":"capability_speed__gte","required":false,"schema":{"type":"integer"}},{"description":"Filter by organisation_name","in":"query","name":"organisation_name","required":false,"schema":{"type":"string"}},{"description":"Filter by metro_area","in":"query","name":"metro_area","required":false,"schema":{"type":"string"}},{"description":"Filter by metro_area_network","in":"query","name":"metro_area_network","required":false,"schema":{"type":"string"}},{"description":"Filter by address_country","in":"query","name":"address_country","required":false,"schema":{"type":"string"}},{"description":"Filter by address_locality","in":"query","name":"address_locality","required":false,"schema":{"type":"string"}},{"description":"Filter by postal_code","in":"query","name":"postal_code","required":false,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/Facility"},"type":"array"}}},"description":"List of: Facility"},"400":{"content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/ProblemResponse"},{"properties":{"status":{"example":400},"title":{"example":"Some fields did not validate."},"type":{"enum":["https://errors.ix-api.net/v2/validation-error.html"],"type":"string"}},"type":"object"},{}]}}},"description":"ValidationError"},"401":{"content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/ProblemResponse"},{"properties":{"status":{"example":401},"title":{"example":"Authentication Credentials Invalid"},"type":{"enum":["https://errors.ix-api.net/v2/authentication-error.html","https://errors.ix-api.net/v2/signature-expired.html"],"type":"string"}},"type":"object"},{}]}}},"description":"Authentication"},"403":{"content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/ProblemResponse"},{"properties":{"status":{"example":403},"title":{"example":"You do not have permission to perform this action."},"type":{"enum":["https://errors.ix-api.net/v2/permission-denied.html"],"type":"string"}},"type":"object"},{}]}}},"description":"PermissionDenied"}},"tags":["facilities"]}},"/facilities/{id}":{"get":{"description":"Retrieve a facility by id","operationId":"facilities_read","parameters":[{"description":"Get by id","in":"path","name":"id","required":true,"schema":{"description":"","title":"","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/Facility"},"type":"array"}}},"description":"List of: Facility"},"401":{"content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/ProblemResponse"},{"properties":{"status":{"example":401},"title":{"example":"Authentication Credentials Invalid"},"type":{"enum":["https://errors.ix-api.net/v2/authentication-error.html","https://errors.ix-api.net/v2/signature-expired.html"],"type":"string"}},"type":"object"},{}]}}},"description":"Authentication"},"403":{"content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/ProblemResponse"},{"properties":{"status":{"example":403},"title":{"example":"You do not have permission to perform this action."},"type":{"enum":["https://errors.ix-api.net/v2/permission-denied.html"],"type":"string"}},"type":"object"},{}]}}},"description":"PermissionDenied"},"404":{"content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/ProblemResponse"},{"properties":{"status":{"example":404},"title":{"example":"Not found."},"type":{"enum":["https://errors.ix-api.net/v2/not-found.html"],"type":"string"}},"type":"object"},{}]}}},"description":"NotFound"}},"tags":["facilities"]}},"/health":{"get":{"description":"Get the IX-API service health status.","operationId":"api_health_read","responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/HealthResponse"}}},"description":"Health Status Response"}},"tags":["health"]}},"/implementation":{"get":{"description":"Get the API implementation details.","operationId":"api_implementation_read","responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ImplementationResponse"}}},"description":"API Implementation"}},"tags":["implementation"]}},"/ips":{"get":{"description":"List all ip addresses (and prefixes).","operationId":"ips_list","parameters":[{"description":"Filter by id","explode":false,"in":"query","name":"id","required":false,"schema":{"example":"id1,id2,id3","items":{"type":"string"},"type":"array"},"style":"form"},{"description":"Filter by managing_account","in":"query","name":"managing_account","required":false,"schema":{"type":"string"}},{"description":"Filter by consuming_account","in":"query","name":"consuming_account","required":false,"schema":{"type":"string"}},{"description":"Filter by external_ref","in":"query","name":"external_ref","required":false,"schema":{"type":"string"}},{"description":"Filter by network_service","in":"query","name":"network_service","required":false,"schema":{"type":"string"}},{"description":"Filter by network_service_config","in":"query","name":"network_service_config","required":false,"schema":{"type":"string"}},{"description":"Filter by network_feature","in":"query","name":"network_feature","required":false,"schema":{"type":"string"}},{"description":"Filter by network_feature_config","in":"query","name":"network_feature_config","required":false,"schema":{"type":"string"}},{"description":"Filter by version","in":"query","name":"version","required":false,"schema":{"type":"integer"}},{"description":"Filter by fqdn","in":"query","name":"fqdn","required":false,"schema":{"type":"string"}},{"description":"Filter by prefix_length","in":"query","name":"prefix_length","required":false,"schema":{"type":"integer"}},{"description":"Filter by valid_not_before","in":"query","name":"valid_not_before","required":false,"schema":{"type":"string"}},{"description":"Filter by valid_not_after","in":"query","name":"valid_not_after","required":false,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/IpAddress"},"type":"array"}}},"description":"List of: IP-Address"},"400":{"content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/ProblemResponse"},{"properties":{"status":{"example":400},"title":{"example":"Some fields did not validate."},"type":{"enum":["https://errors.ix-api.net/v2/validation-error.html"],"type":"string"}},"type":"object"},{}]}}},"description":"ValidationError"},"401":{"content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/ProblemResponse"},{"properties":{"status":{"example":401},"title":{"example":"Authentication Credentials Invalid"},"type":{"enum":["https://errors.ix-api.net/v2/authentication-error.html","https://errors.ix-api.net/v2/signature-expired.html"],"type":"string"}},"type":"object"},{}]}}},"description":"Authentication"},"403":{"content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/ProblemResponse"},{"properties":{"status":{"example":403},"title":{"example":"You do not have permission to perform this action."},"type":{"enum":["https://errors.ix-api.net/v2/permission-denied.html"],"type":"string"}},"type":"object"},{}]}}},"description":"PermissionDenied"}},"tags":["ips"]},"post":{"description":"Add an ip host address or network prefix.","operationId":"ips_create","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/IpAddressRequest"}}},"description":"IP-Address / Prefix allocation Request"},"responses":{"201":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/IpAddress"}}},"description":"IP-Address"}},"tags":["ips"]}},"/ips/{id}":{"get":{"description":"Get a single ip addresses by it's id.","operationId":"ips_read","parameters":[{"description":"Get by id","in":"path","name":"id","required":true,"schema":{"description":"","title":"","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/IpAddress"}}},"description":"IP-Address"},"401":{"content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/ProblemResponse"},{"properties":{"status":{"example":401},"title":{"example":"Authentication Credentials Invalid"},"type":{"enum":["https://errors.ix-api.net/v2/authentication-error.html","https://errors.ix-api.net/v2/signature-expired.html"],"type":"string"}},"type":"object"},{}]}}},"description":"Authentication"},"403":{"content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/ProblemResponse"},{"properties":{"status":{"example":403},"title":{"example":"You do not have permission to perform this action."},"type":{"enum":["https://errors.ix-api.net/v2/permission-denied.html"],"type":"string"}},"type":"object"},{}]}}},"description":"PermissionDenied"},"404":{"content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/Proble