{
  "anthropic": {
    "url": "https://openapi.primate.run/spec/anthropic.json",
    "title": "Anthropic API + top-level-cache-control",
    "description": "",
    "servers": [
      {
        "url": "https://api.anthropic.com"
      }
    ]
  },
  "atlassian/confluence": {
    "url": "https://openapi.primate.run/spec/atlassian/confluence.json",
    "title": "The Confluence Cloud REST API v2",
    "description": "This document describes Confluence's v2 APIs. This is intended to be an iteration on the existing Confluence Cloud REST API with improvements in both endpoint definitions and performance.",
    "servers": [
      {
        "url": "https://{your-domain}/wiki/api/v2",
        "variables": {
          "your-domain": {
            "default": "no-default",
            "description": "Specific domain of the Confluence site being used. Must be provided."
          }
        }
      }
    ]
  },
  "atlassian/jira": {
    "url": "https://openapi.primate.run/spec/atlassian/jira.json",
    "title": "The Jira Cloud platform REST API",
    "description": "Jira Cloud platform REST API documentation",
    "servers": [
      {
        "url": "https://your-domain.atlassian.net"
      }
    ]
  },
  "bitbucket": {
    "url": "https://openapi.primate.run/spec/bitbucket.json",
    "title": "Bitbucket API",
    "description": "Code against the Bitbucket API to automate simple tasks, embed Bitbucket data into your own site, build mobile or desktop apps, or even add custom UI add-ons into Bitbucket itself using the Connect framework.",
    "servers": [
      {
        "url": "https://api.bitbucket.org/2.0"
      }
    ]
  },
  "crunchbase": {
    "url": "https://openapi.primate.run/spec/crunchbase.json",
    "title": "Crunchbase Enterprise API",
    "description": "Crunchbase Enterprise API, 2021-07-16",
    "servers": [
      {
        "url": "https://api.crunchbase.com/api/v4"
      }
    ]
  },
  "discord": {
    "url": "https://openapi.primate.run/spec/discord.json",
    "title": "Discord HTTP API (Preview)",
    "description": "Preview of the Discord v10 HTTP API specification. See https://discord.com/developers/docs for more details.",
    "servers": [
      {
        "url": "https://discord.com/api/v10"
      }
    ]
  },
  "docusign/esignature": {
    "url": "https://openapi.primate.run/spec/docusign/esignature.json",
    "title": "Docusign eSignature REST API",
    "description": "The Docusign eSignature REST API provides you with a powerful, convenient, and simple Web services API for interacting with Docusign.",
    "servers": {}
  },
  "github": {
    "url": "https://openapi.primate.run/spec/github.json",
    "title": "GitHub v3 REST API",
    "description": "GitHub's v3 REST API.",
    "servers": [
      {
        "url": "https://api.github.com"
      }
    ]
  },
  "google/drive": {
    "url": "https://openapi.primate.run/spec/google/drive.json",
    "title": "",
    "description": "",
    "servers": {}
  },
  "google/maps": {
    "url": "https://openapi.primate.run/spec/google/maps.json",
    "title": "Google Maps Platform",
    "description": "API Specification for Google Maps Platform",
    "servers": [
      {
        "url": "https://www.googleapis.com"
      }
    ]
  },
  "google/vertex": {
    "url": "https://openapi.primate.run/spec/google/vertex.json",
    "title": "",
    "description": "",
    "servers": {}
  },
  "mattermost": {
    "url": "https://openapi.primate.run/spec/mattermost.json",
    "title": "Mattermost API",
    "description": "The Mattermost Web Services API enables Mattermost clients and third-party applications to interact with Mattermost servers.\n\n[Official JavaScript and Golang drivers](#/#official-drivers) are available to simplify API integration.\n\nBy using this API, you agree to our [terms of service](https://about.mattermost.com/default-terms/).\n\n[Find out more about Mattermost](https://about.mattermost.com/)\n## Contents\n### Core Concepts\n* [Schema & Conventions](#/#schema--conventions)\n* [Authentication](#/#authentication)\n* [Rate Limiting](#/#rate-limiting)\n* [Error Handling](#/#error-handling)\n* [WebSocket](#/#websocket)\n\n  * [Authentication](#/#authentication-1)\n\n  * [Websocket Events](#/#websocket-events)\n\n  * [Websocket API](#/#websocket-api)\n\n### Drivers\n* [Official Drivers](#/#official-drivers)\n* [Community-built Drivers](#/#community-built-drivers)\n### Community\n* [Support](#/#support)\n* [Contributing](#/#contributing)\n\n## Schema & Conventions\n- All API access is through HTTP(S) requests at `your-mattermost-url/api/v4`.\n- All request and response bodies are `application/json`.\n- When using endpoints that require a user id, the string `me` can be used in place of the user id to indicate the action is to be taken for the logged in user.\n- For all endpoints that implement pagination via the `per_page` parameter:\n\n  - Maximum items per page: 200 (requests exceeding this will be silently truncated)\n\n  - Default value if a paged API requires a `per_page` parameter and it is not provided: 60\n\n## Authentication\n\n  There are multiple ways to authenticate against the Mattermost API.\n\n  All examples assume there is a Mattermost instance running at http://localhost:8065.\n\n  ### Session Token\n\n  Make an HTTP POST to `your-mattermost-url/api/v4/users/login` with a JSON\n  body indicating the user's `login_id`, `password` and optionally the MFA\n  `token`. The `login_id` can be an email, username or an AD/LDAP ID\n  depending on the system's configuration.\n\n  ```bash\n  curl -i -d '{\"login_id\":\"someone@nowhere.com\",\"password\":\"thisisabadpassword\"}' http://localhost:8065/api/v4/users/login\n  ```\n\n  NOTE: If you're running cURL on windows, you will have to change the single quotes to double quotes, and escape the inner double quotes with backslash, like below:\n\n\n  ```bash\n  curl -i -d \"{\\\"login_id\\\":\\\"someone@nowhere.com\\\",\\\"password\\\":\\\"thisisabadpassword\\\"}\" http://localhost:8065/api/v4/users/login\n  ```\n\n  If successful, the response will contain a `Token` header and a user object in the body.\n\n  ```http\n  HTTP/1.1 200 OK\n  Content-Type: application/json\n  Permissions-Policy:\n  Referrer-Policy: no-referrer\n  Token: ckh3t4knu3fzujt76o57f5jo4w\n  Vary: Origin\n  Vary: Accept-Encoding\n  X-Content-Type-Options: nosniff\n  X-Request-Id: bk3uzm335jr9tnoh4mcsybmmjr\n  X-Version-Id: 10.6.0.13685270376.215f100adf6ccda09afcaaa84ac4bfbd.true\n  Date: Fri, 28 Mar 2025 09:33:22 GMT\n  Content-Length: 796\n\n  {{user object as json}}\n  ```\n\n  Include the `Token` as part of the `Authorization` header on your future API requests with the `Bearer` method.\n\n  ```bash\n  curl -i -H 'Authorization: Bearer ckh3t4knu3fzujt76o57f5jo4w' http://localhost:8065/api/v4/users/me\n  ```\n  Alternatively, include the `Token` as your `MMAUTHTOKEN` cookie value on you future API requests:\n\n  ```bash\n  curl -i -H 'Cookie: MMAUTHTOKEN=ckh3t4knu3fzujt76o57f5jo4w' http://localhost:8065/api/v4/users/me\n  ```\n\n\n  You should now be able to access the API as the user you logged in as.\n\n\n  ### Personal Access Tokens\n\n  Using [personal access tokens](https://developers.mattermost.com/integrate/reference/personal-access-token/) is very similar to using a session token. The only real difference is that session tokens will expire, while personal access tokens will live until they are manually revoked by the user or an admin.\n\n  Just like session tokens, include the personal access token as part of the `Authorization` header in your requests using the `Bearer` method. Assuming our personal access token is `9xuqwrwgstrb3mzrxb83nb357a`, we could use it as shown below.\n\n  ```bash\n  curl -i -H 'Authorization: Bearer 9xuqwrwgstrb3mzrxb83nb357a' http://localhost:8065/api/v4/users/me\n  ```\n\n## Rate Limiting\n  Whenever you make an HTTP request to the Mattermost API you might notice\n  the following headers included in the response:\n\n  ```http\n  X-Ratelimit-Limit: 10\n  X-Ratelimit-Remaining: 9\n  X-Ratelimit-Reset: 1441983590\n  ```\n\n\n  These headers are telling you your current rate limit status.\n\n\n  | Header                  | Description                                                        |\n  |:-----------------------|:-------------------------------------------------------------------|\n  | X-Ratelimit-Limit      | The maximum number of requests you can make per second.            |\n  | X-Ratelimit-Remaining  | The number of requests remaining in the current window.            |\n  | X-Ratelimit-Reset      | The remaining UTC epoch seconds before the rate limit resets.      |\n\n  If you exceed your rate limit for a window you will receive the following error in the body of the response:\n\n  ```http\n  HTTP/1.1 429 Too Many Requests\n  Date: Tue, 10 Sep 2015 11:20:28 GMT\n  X-RateLimit-Limit: 10\n  X-RateLimit-Remaining: 0\n  X-RateLimit-Reset: 1\n\n  limit exceeded\n  ```\n\n## Error Handling\n\n  All errors will return an appropriate HTTP response code along with the\n  following JSON body:\n\n  ```json\n  {\n      \"id\": \"the.error.id\",\n      \"message\": \"Something went wrong\", // the reason for the error\n      \"request_id\": \"\", // the ID of the request\n      \"status_code\": 0, // the HTTP status code\n      \"is_oauth\": false // whether the error is OAuth specific\n  }\n\n  ```\n\n## WebSocket\n In addition to the HTTP RESTful web service, Mattermost also offers a WebSocket event delivery system and some API functionality.\n\n To connect to the WebSocket follow the standard opening handshake as [defined by the RFC specification](https://tools.ietf.org/html/rfc6455#section-1.3) to the `/api/v4/websocket` endpoint of Mattermost.\n\n\n### Authentication\n\n  The Mattermost WebSocket can be authenticated using [the standard API authentication methods](/#/#authentication) (by a cookie or with an explicit Authorization header) or through an authentication challenge. If you're authenticating from a browser and have logged in with the Mattermost API, your authentication cookie should already be set. This is how the Mattermost webapp authenticates with the WebSocket.\n\n  To authenticate with an authentication challenge, first connect the WebSocket and then send the following JSON over the connection:\n\n\n  ```json\n  {\n    \"seq\": 1,\n    \"action\": \"authentication_challenge\",\n    \"data\": {\n      \"token\": \"mattermosttokengoeshere\"\n    }\n  }\n  ```\n\n  If successful, you will receive a standard OK response over the WebSocket connection:\n\n\n  ```json\n  {\n    \"status\": \"OK\",\n    \"seq_reply\": 1\n  }\n  ```\n\n  Once successfully authenticated, the server will pass a `hello` WebSocket event containing server version over the connection.\n\n### Websocket Events\n\n  WebSocket events are primarily used to alert the client to changes in Mattermost, such as delivering new posts or alerting the client that another user is typing in a channel.\n\n  Events on the WebSocket will have the form:\n\n  ```json\n  {\n    \"event\": \"hello\",\n    \"data\": {\n      \"server_version\": \"3.6.0.1451.1c38da627ebb4e3635677db6939e9195\"\n    },\n    \"broadcast\":{\n      \"omit_users\": null,\n      \"user_id\": \"ay5sq51sebfh58ktrce5ijtcwy\",\n      \"channel_id\": \"\",\n      \"team_id\": \"\"\n    },\n    \"seq\": 0\n  }\n  ```\n\n  The `event` field indicates the event type, `data` contains any data relevant to the event and `broadcast` contains information about who the event was sent to. For example, the above example has `user_id` set to \"ay5sq51sebfh58ktrce5ijtcwy\" meaning that only the user with that ID received this event broadcast. The `omit_users` field can contain an array of user IDs that were specifically omitted from receiving the event.\n\n  The list of Mattermost WebSocket events are:\n\n  - added_to_team\n  - authentication_challenge\n  - channel_converted\n  - channel_created\n  - channel_deleted\n  - channel_member_updated\n  - channel_updated\n  - channel_viewed\n  - config_changed\n  - delete_team\n  - direct_added\n  - emoji_added\n  - ephemeral_message\n  - group_added\n  - hello\n  - leave_team\n  - license_changed\n  - memberrole_updated\n  - new_user\n  - plugin_disabled\n  - plugin_enabled\n  - plugin_statuses_changed\n  - post_deleted\n  - post_edited\n  - post_unread\n  - posted\n  - preference_changed\n  - preferences_changed\n  - preferences_deleted\n  - reaction_added\n  - reaction_removed\n  - response\n  - role_updated\n  - status_change\n  - typing\n  - update_team\n  - user_added\n  - user_removed\n  - user_role_updated\n  - user_updated\n  - dialog_opened\n  - thread_updated\n  - thread_follow_changed\n  - thread_read_changed\n\n### Websocket API\n\n  Mattermost has some basic support for WebSocket APIs. A connected WebSocket can make requests by sending the following over the connection:\n\n  ```json\n  {\n    \"action\": \"user_typing\",\n    \"seq\": 2,\n    \"data\": {\n      \"channel_id\": \"nhze199c4j87ped4wannrjdt9c\",\n      \"parent_id\": \"\"\n    }\n  }\n  ```\n\n  This is an example of making a `user_typing` request, with the purpose of alerting the server that the connected client has begun typing in a channel or thread. The `action` field indicates what is being requested, and performs a similar duty as the route in a HTTP API. The `data` field is used to add any additional data along with the request. The server supports binary websocket messages as well in case the client has such a requirement.\n\n  The `seq` or sequence number is set by the client and should be incremented with every use. It is used to distinguish responses to requests that come down the WebSocket. For example, a standard response to the above request would be:\n\n\n  ```json\n  {\n    \"status\": \"OK\",\n    \"seq_reply\": 2\n  }\n  ```\n\n  Notice `seq_reply` is 2, matching the `seq` of the original request. Using this a client can distinguish which request the response is meant for.\n\n  If there was any information to respond with, it would be encapsulated in a `data` field.\n\n  In the case of an error, the response would be:\n\n\n  ```json\n  {\n    \"status\": \"FAIL\",\n    \"seq_reply\": 2,\n    \"error\": {\n      \"id\": \"some.error.id.here\",\n      \"message\": \"Some error message here\"\n    }\n  }\n  ```\n\n\n  The list of WebSocket API actions is:\n\n  - user_typing\n  - get_statuses\n  - get_statuses_by_ids\n\n\n  To see how these actions work, please refer to either the [Golang WebSocket driver](https://github.com/mattermost/mattermost/blob/master/server/public/model/websocket_client.go) or our [JavaScript WebSocket driver](https://github.com/mattermost/mattermost/blob/master/webapp/platform/client/src/websocket.ts).\n\n## Drivers\n  The easiest way to interact with the Mattermost Web Service API is through\n  a language specific driver.\n\n  ### Official Drivers\n\n  * Mattermost JavaScript/TypeScript Driver\n    * [NPM](https://www.npmjs.com/package/@mattermost/client)\n    * [Source](https://github.com/mattermost/mattermost/tree/master/webapp/platform/client)\n\n  * [Mattermost Golang Driver](https://pkg.go.dev/github.com/mattermost/mattermost/server/public/model#Client4)\n\n  ### Community-built Drivers\n\n  For community-built drivers and API wrappers, see [our app directory](https://mattermost.com/marketplace-category/mattermost-developers-tools/).\n\n## Support\nMattermost core committers work with the community to keep the API documentation up-to-date.\nIf you have questions on API routes not listed in this reference, you can:\n- [Join the Mattermost community server](https://community.mattermost.com) to ask questions in the Developers channel\n- Contact us at feedback@mattermost.com\n\n[Bug reports](https://github.com/mattermost/mattermost/issues) in the documentation or the API are also welcome, as are pull requests to fix the issues.\n\n## Contributing\nWhen you have answers to API questions not addressed in our documentation we ask you to consider making a pull request to improve our reference. Small and large changes are all welcome.\n\nWe also have [Help Wanted tickets](https://github.com/mattermost/mattermost/issues?q=is%3Aopen+is%3Aissue+label%3AArea%2FAPI) available for community members who would like to help others more easily use the APIs. We acknowledge everyone's contribution in the [release notes of our next version](https://docs.mattermost.com/administration/changelog.html#contributors).\n\nThe source code for this API reference is hosted at https://github.com/mattermost/mattermost/tree/master/api.\n",
    "servers": [
      {
        "url": "{your-mattermost-url}",
        "variables": {
          "your-mattermost-url": {
            "default": "http://localhost:8065"
          }
        }
      }
    ]
  },
  "microsoft/graph": {
    "url": "https://openapi.primate.run/spec/microsoft/graph.json",
    "title": "OData Service for namespace microsoft.graph",
    "description": "This OData service is located at https://graph.microsoft.com/v1.0",
    "servers": [
      {
        "url": "https://graph.microsoft.com/v1.0"
      }
    ]
  },
  "openai": {
    "url": "https://openapi.primate.run/spec/openai.json",
    "title": "OpenAI API",
    "description": "The OpenAI REST API. Please see https://platform.openai.com/docs/api-reference for more details.",
    "servers": [
      {
        "url": "https://api.openai.com/v1"
      }
    ]
  },
  "paypal/disputes": {
    "url": "https://openapi.primate.run/spec/paypal/disputes.json",
    "title": "Disputes",
    "description": "Occasionally, something goes wrong with a customer's order. To dispute a charge, a customer can create a dispute with PayPal. PayPal merchants, partners, and external developers can use the PayPal Disputes API to manage customer disputes.<blockquote><strong>Note:</strong> In the live environment, merchants cannot create disputes but can only respond to customer-created disputes. However, merchants can create disputes in the sandbox environment. When you create an app, enable Disputes in the App feature options section.</blockquote>A customer can also ask his or her bank or credit card company to dispute and reverse a charge, which is known as a <i>chargeback</i>. For more information, see <a href=\"https://www.paypal.com/us/brc/article/customer-disputes-claims-chargebacks-bank-reversals\">Disputes, claims, chargebacks, and bank reversals</a>.<br/><br/>When a customer disputes a charge, you can use this API to provide evidence that the charge is legitimate. To provide evidence or appeal a dispute, you submit a proof of delivery or proof of refund document or notes, which can include logs.<br/><br/>Normally, an agent at PayPal creates a dispute, updates the dispute status, and settles disputes, but now you can run test cases in the sandbox that complete these operations.<br/><br/><blockquote><strong>Important:</strong> The create, cancel, compute metrics, change reason, and validate eligibility methods are available as a limited-release solution at this time. For more information, reach out to your PayPal account manager.</blockquote><br/>For details, see <a href=\"/docs/integration/direct/customer-disputes/\">Disputes Overview</a> documentation.",
    "servers": [
      {
        "url": "https://api-m.sandbox.paypal.com",
        "description": "PayPal Sandbox Environment"
      },
      {
        "url": "https://api-m.paypal.com",
        "description": "PayPal Live Environment"
      }
    ]
  },
  "paypal/invoicing": {
    "url": "https://openapi.primate.run/spec/paypal/invoicing.json",
    "title": "Invoices",
    "description": "Use the Invoicing API to create, send, and manage invoices. You can also use the API or webhooks to track invoice payments. When you send an invoice to a customer, the invoice moves from draft to payable state. PayPal then emails the customer a link to the invoice on the PayPal website. Customers with a PayPal account can log in and pay the invoice with PayPal. Alternatively, customers can pay as a guest with a debit card or credit card. For more information, see the <a href=\"/docs/invoicing/\">Invoicing Overview</a> and the <a href=\"/docs/invoicing/basic-integration/\">Invoicing Integration Guide</a>.",
    "servers": [
      {
        "url": "https://api-m.sandbox.paypal.com",
        "description": "PayPal Sandbox Environment"
      },
      {
        "url": "https://api-m.paypal.com",
        "description": "PayPal Live Environment"
      }
    ]
  },
  "paypal/orders": {
    "url": "https://openapi.primate.run/spec/paypal/orders.json",
    "title": "Orders",
    "description": "An order represents a payment between two or more parties. Use the Orders API to create, update, retrieve, authorize, and capture orders.",
    "servers": [
      {
        "url": "https://api-m.sandbox.paypal.com",
        "description": "PayPal Sandbox Environment"
      },
      {
        "url": "https://api-m.paypal.com",
        "description": "PayPal Live Environment"
      }
    ]
  },
  "paypal/payment-experience": {
    "url": "https://openapi.primate.run/spec/paypal/payment-experience.json",
    "title": "Payment Experience Web Profiles",
    "description": "Use the Payment Experience API to create seamless payment experience profiles. For information about how to create a PayPal payment with a web experience profile, see <a href=\"/docs/integration/direct/payment-experience/\">Web experience profiles</a>.",
    "servers": [
      {
        "url": "https://api-m.sandbox.paypal.com",
        "description": "PayPal Sandbox Environment"
      },
      {
        "url": "https://api-m.paypal.com",
        "description": "PayPal Live Environment"
      }
    ]
  },
  "paypal/payment-tokens": {
    "url": "https://openapi.primate.run/spec/paypal/payment-tokens.json",
    "title": "Payment Method Tokens",
    "description": "The Payment Method Tokens API saves payment methods so payers don't have to enter details for future transactions. Payers can check out faster or pay without being present after they agree to save a payment method.<br><br>The API associates a payment method with a temporary setup token. Pass the setup token to the API to exchange the setup token for a permanent token.<br><br>The permanent token represents a payment method that's saved to the vault. This token can be used repeatedly for checkout or recurring transactions such as subscriptions.",
    "servers": [
      {
        "url": "https://api-m.sandbox.paypal.com",
        "description": "PayPal Sandbox Environment"
      },
      {
        "url": "https://api-m.paypal.com",
        "description": "PayPal Live Environment"
      }
    ]
  },
  "paypal/payments": {
    "url": "https://openapi.primate.run/spec/paypal/payments.json",
    "title": "Payments",
    "description": "Call the Payments API to authorize payments, capture authorized payments, refund payments that have already been captured, and show payment information. Use the Payments API in conjunction with the <a href=\"/docs/api/orders/v2/\">Orders API</a>. For more information, see the <a href=\"/docs/checkout/\">PayPal Checkout Overview</a>.",
    "servers": [
      {
        "url": "https://api-m.sandbox.paypal.com",
        "description": "PayPal Sandbox Environment"
      },
      {
        "url": "https://api-m.paypal.com",
        "description": "PayPal Live Environment"
      }
    ]
  },
  "paypal/payouts": {
    "url": "https://openapi.primate.run/spec/paypal/payouts.json",
    "title": "Payouts",
    "description": "Use the Payouts API to make payments to multiple PayPal or Venmo recipients. The Payouts API is a fast, convenient way to send commissions, rebates, rewards, and general disbursements. You can send up to 15,000 payments per call. If you integrated the Payouts API before September 1, 2017, you receive transaction reports through <a href=\"/docs/payouts/standard/reports/\">Payouts Reporting</a>. The Payouts API uses the <a href=\"https://tools.ietf.org/html/rfc3339#section-5.6\">ISO 8601 Internet date and time format</a>.",
    "servers": [
      {
        "url": "https://api-m.sandbox.paypal.com",
        "description": "PayPal Sandbox Environment"
      },
      {
        "url": "https://api-m.paypal.com",
        "description": "PayPal Live Environment"
      }
    ]
  },
  "paypal/products": {
    "url": "https://openapi.primate.run/spec/paypal/products.json",
    "title": "Catalog Products",
    "description": "Merchants can use the Catalog Products API to create products, which are goods and services.",
    "servers": [
      {
        "url": "https://api-m.sandbox.paypal.com",
        "description": "PayPal Sandbox Environment"
      },
      {
        "url": "https://api-m.paypal.com",
        "description": "PayPal Live Environment"
      }
    ]
  },
  "paypal/referrals": {
    "url": "https://openapi.primate.run/spec/paypal/referrals.json",
    "title": "Partner Referrals",
    "description": "Use the Partner Referrals API to add PayPal seller accounts to PayPal Complete Payments Platform for Marketplaces and Platforms. <blockquote><strong>Important:</strong> This endpoint is available to approved partners only. <a href=\"/docs/multiparty/#link-tellusaboutyourplatform\">Fill out this form</a> to get approved and a PayPal representative will reach out to you shortly.</blockquote> For more information about partner integrations and onboarding sellers, see <a href=\"/docs/multiparty\">PayPal Complete Payments Platform for Marketplaces and Platforms.",
    "servers": [
      {
        "url": "https://api-m.sandbox.paypal.com",
        "description": "PayPal Sandbox Environment"
      },
      {
        "url": "https://api-m.paypal.com",
        "description": "PayPal Live Environment"
      }
    ]
  },
  "paypal/subscriptions": {
    "url": "https://openapi.primate.run/spec/paypal/subscriptions.json",
    "title": "Subscriptions",
    "description": "You can use billing plans and subscriptions to create subscriptions that process recurring PayPal payments for physical or digital goods, or services. A plan includes pricing and billing cycle information that defines the amount and frequency of charge for a subscription. You can also define a fixed plan, such as a $5 basic plan or a volume- or graduated-based plan with pricing tiers based on the quantity purchased. For more information, see <a href=\"/docs/subscriptions/\">Subscriptions Overview</a>.",
    "servers": [
      {
        "url": "https://api-m.sandbox.paypal.com",
        "description": "PayPal Sandbox Environment"
      },
      {
        "url": "https://api-m.paypal.com",
        "description": "PayPal Live Environment"
      }
    ]
  },
  "paypal/tracking": {
    "url": "https://openapi.primate.run/spec/paypal/tracking.json",
    "title": "Shipment Tracking",
    "description": "Merchants can use the PayPal Add Tracking API to manage tracking information. Merchants can add tracking numbers and associated information to PayPal. There are 2 ways in which tracking details can be shared to PayPal.\nIf you have a legacy integration that doesn't use the Orders v2 API, share tracking details through the <a href=\"/docs/tracking/tracking-api/\">Add Shipping Tracking API</a>. If you are using the Orders v2 API, share tracking details through the <a href=\"/docs/tracking/orders-api/integrate/\">Orders v2 API</a>.After adding these details to PayPal, merchants can:<ul><li>Update tracking details.</li><li>Show tracking details.</li><li>Cancel tracking numbers.</li></ul>For more information, see the <a href=\"/docs/tracking/tracking-api/\">Add Tracking API Overview</a> and <a href=\"/docs/tracking/tracking-api/integrate/\">Add Tracking API Integration Guide</a>.",
    "servers": [
      {
        "url": "https://api-m.sandbox.paypal.com",
        "description": "PayPal Sandbox Environment"
      },
      {
        "url": "https://api-m.paypal.com",
        "description": "PayPal Live Environment"
      }
    ]
  },
  "paypal/transactions": {
    "url": "https://openapi.primate.run/spec/paypal/transactions.json",
    "title": "Transaction Search",
    "description": "Use the Transaction Search API to get the history of transactions for a PayPal account. To use the API on behalf of third parties, you must be part of the PayPal partner network. Reach out to your partner manager for the next steps. To enroll in the partner program, see <a href=\"https://www.paypal.com/my/webapps/mpp/partner-program/global-programs\">Partner with PayPal</a>. For more information about the API, see the <a href=\"/docs/transaction-search/\">Transaction Search API Integration Guide</a>.<blockquote><strong>Note:</strong> To use the API on behalf of third parties, you must be part of the PayPal partner network. Reach out to your partner manager for the next steps. To enroll in the partner program, see <a href=\"https://www.paypal.com/my/webapps/mpp/partner-program/global-programs\">Partner with PayPal</a>.</blockquote>",
    "servers": [
      {
        "url": "https://api-m.sandbox.paypal.com",
        "description": "PayPal Sandbox Environment"
      },
      {
        "url": "https://api-m.paypal.com",
        "description": "PayPal Live Environment"
      }
    ]
  },
  "paypal/webhooks": {
    "url": "https://openapi.primate.run/spec/paypal/webhooks.json",
    "title": "Webhooks Management",
    "description": "The PayPal REST APIs use <a href=\"/docs/api/notifications/webhooks/\"/>webhooks</a> for event notification. Webhooks are HTTP callbacks that receive notification messages for events. After you configure a webhook listener for your app, you can <a href=\"#webhooks_create\">create a webhook</a>, which subscribes the webhook listener for your app to events. The <code>notifications</code> namespace contains resource collections for webhooks.",
    "servers": [
      {
        "url": "https://api-m.sandbox.paypal.com",
        "description": "PayPal Sandbox Environment"
      },
      {
        "url": "https://api-m.paypal.com",
        "description": "PayPal Live Environment"
      }
    ]
  },
  "plaid": {
    "url": "https://openapi.primate.run/spec/plaid.json",
    "title": "The Plaid API",
    "description": "The Plaid REST API. Please see https://plaid.com/docs/api for more details.",
    "servers": [
      {
        "description": "Production",
        "url": "https://production.plaid.com"
      },
      {
        "description": "Sandbox",
        "url": "https://sandbox.plaid.com"
      }
    ]
  },
  "podman/libpod": {
    "url": "https://openapi.primate.run/spec/podman/libpod.json",
    "title": "supports a RESTful API for the Libpod library",
    "description": "This documentation describes the Podman v2.x+ RESTful API. It consists of a Docker-compatible\nAPI and a Libpod API providing support for Podman’s unique features such as pods.\n\nTo start the service and keep it running for 5,000 seconds (-t 0 runs forever):\n\npodman system service -t 5000 &\n\nYou can then use cURL on the socket using requests documented below.\n\nNOTE: if you install the package podman-docker, it will create a symbolic\nlink for /run/docker.sock to /run/podman/podman.sock\n\nNOTE: Some fields in the API response JSON are encoded as omitempty, which means that\nif said field has a zero value, they will not be encoded in the API response. This\nis a feature to help reduce the size of the JSON responses returned via the API.\n\nNOTE: Due to the limitations of [go-swagger](https://github.com/go-swagger/go-swagger),\nsome field values that have a complex type show up as null in the docs as well as in the\nAPI responses. This is because the zero value for the field type is null. The field\ndescription in the docs will state what type the field is expected to be for such cases.\n\nSee podman-system-service(1) for more information.\n\nQuick Examples:\n\n'podman info'\n\ncurl --unix-socket /run/podman/podman.sock http://d/v6.0.0/libpod/info\n\n'podman pull quay.io/containers/podman'\n\ncurl -XPOST --unix-socket /run/podman/podman.sock -v 'http://d/v6.0.0/images/create?fromImage=quay.io%2Fcontainers%2Fpodman'\n\n'podman list images'\n\ncurl --unix-socket /run/podman/podman.sock -v 'http://d/v6.0.0/libpod/images/json' | jq",
    "servers": [
      {
        "url": "http://podman.io"
      },
      {
        "url": "https://podman.io"
      }
    ]
  },
  "sonatype/nexus": {
    "url": "https://openapi.primate.run/spec/sonatype/nexus.json",
    "title": "Sonatype Nexus Repository Manager",
    "description": "This documents the available APIs into [Sonatype Nexus Repository Manager](https://www.sonatype.com/products/sonatype-nexus-repository) as of version 3.89.0-09.",
    "servers": [
      {
        "url": "/service/rest/"
      }
    ]
  },
  "spotify": {
    "url": "https://openapi.primate.run/spec/spotify.json",
    "title": "Spotify Web API",
    "description": "You can use Spotify's Web API to discover music and podcasts, manage your Spotify library, control audio playback, and much more. Browse our available Web API endpoints using the sidebar at left, or via the navigation bar on top of this page on smaller screens.\n\nIn order to make successful Web API requests your app will need a valid access token. One can be obtained through <a href=\"https://developer.spotify.com/documentation/general/guides/authorization-guide/\">OAuth 2.0</a>.\n\nThe base URI for all Web API requests is `https://api.spotify.com/v1`.\n\nNeed help? See our <a href=\"https://developer.spotify.com/documentation/web-api/guides/\">Web API guides</a> for more information, or visit the <a href=\"https://community.spotify.com/t5/Spotify-for-Developers/bd-p/Spotify_Developer\">Spotify for Developers community forum</a> to ask questions and connect with other developers.\n",
    "servers": [
      {
        "url": "https://api.spotify.com/v1"
      }
    ]
  },
  "stripe": {
    "url": "https://openapi.primate.run/spec/stripe.json",
    "title": "Stripe API",
    "description": "The Stripe REST API. Please see https://stripe.com/docs/api for more details.",
    "servers": [
      {
        "url": "https://api.stripe.com/"
      }
    ]
  },
  "trello": {
    "url": "https://openapi.primate.run/spec/trello.json",
    "title": "Trello REST API",
    "description": "",
    "servers": [
      {
        "url": "https://api.trello.com/1"
      }
    ]
  },
  "wikidata": {
    "url": "https://openapi.primate.run/spec/wikidata.json",
    "title": "Wikibase REST API",
    "description": "OpenAPI definition of Wikibase REST API",
    "servers": [
      {
        "url": "https://wikibase.example/w/rest.php/wikibase"
      }
    ]
  },
  "xai": {
    "url": "https://openapi.primate.run/spec/xai.json",
    "title": "xAI's REST API",
    "description": "REST API for xAI compatible with other providers.",
    "servers": {}
  },
  "zendesk": {
    "url": "https://openapi.primate.run/spec/zendesk.json",
    "title": "Support API",
    "description": "Zendesk Support API endpoints",
    "servers": [
      {
        "url": "https://{subdomain}.{domain}.com",
        "variables": {
          "domain": {
            "default": "zendesk"
          },
          "subdomain": {
            "default": "example"
          }
        }
      }
    ]
  },
  "bytenews": {
    "url": "https://openapi.primate.run/spec/bytenews.json",
    "title": "jvm.news API",
    "description": "Content hub and knowledge management for the JVM ecosystem",
    "servers": [
      {
        "url": "http://localhost:8080",
        "description": "Local development server"
      }
    ]
  },
  "contabo": {
    "url": "https://openapi.primate.run/spec/contabo.json",
    "title": "Contabo API",
    "description": "# Introduction\n\nContabo API allows you to manage your resources using HTTP requests.\nThis documentation includes a set of HTTP endpoints that are designed to RESTful principles.\nEach endpoint includes descriptions, request syntax, and examples.\n\nContabo provides also a CLI tool which enables you to manage your resources easily from the command line. [CLI Download and  Installation instructions.](https://github.com/contabo/cntb)\n\n## Product documentation\n\nIf you are looking for description about the products themselves and their usage in general or for specific purposes, please check the [Contabo Product Documentation](https://docs.contabo.com/).\n\n## Getting Started\n\nIn order to use the Contabo API you will need the following credentials which are available from the [Customer Control Panel](https://my.contabo.com/api/details):\n1. ClientId\n2. ClientSecret\n3. API User (your email address to login to the [Customer Control Panel](https://my.contabo.com/api/details))\n4. API Password (this is a new password which you'll set or change in the [Customer Control Panel](https://my.contabo.com/api/details))\n\nYou can either use the API directly or by using the `cntb` CLI (Command Line Interface) tool.\n\n### Using the API directly\n\n#### Via `curl` for Linux/Unix like systems\n\nThis requires `curl` and `jq` in your shell (e.g. `bash`, `zsh`). Please replace the first four placeholders with actual values.\n\n```sh\nCLIENT_ID=<ClientId from Customer Control Panel>\nCLIENT_SECRET=<ClientSecret from Customer Control Panel>\nAPI_USER=<API User from Customer Control Panel>\nAPI_PASSWORD='<API Password from Customer Control Panel>'\nACCESS_TOKEN=$(curl -d \"client_id=$CLIENT_ID\" -d \"client_secret=$CLIENT_SECRET\" --data-urlencode \"username=$API_USER\" --data-urlencode \"password=$API_PASSWORD\" -d 'grant_type=password' 'https://auth.contabo.com/auth/realms/contabo/protocol/openid-connect/token' | jq -r '.access_token')\n# get list of your instances\ncurl -X GET -H \"Authorization: Bearer $ACCESS_TOKEN\" -H \"x-request-id: 51A87ECD-754E-4104-9C54-D01AD0F83406\" \"https://api.contabo.com/v1/compute/instances\" | jq\n```\n\n#### Via `PowerShell` for Windows\n\nPlease open `PowerShell` and execute the following code after replacing the first four placeholders with actual values.\n\n```powershell\n$client_id='<ClientId from Customer Control Panel>'\n$client_secret='<ClientSecret from Customer Control Panel>'\n$api_user='<API User from Customer Control Panel>'\n$api_password='<API Password from Customer Control Panel>'\n$body = @{grant_type='password'\nclient_id=$client_id\nclient_secret=$client_secret\nusername=$api_user\npassword=$api_password}\n$response = Invoke-WebRequest -Uri 'https://auth.contabo.com/auth/realms/contabo/protocol/openid-connect/token' -Method 'POST' -Body $body\n$access_token = (ConvertFrom-Json $([String]::new($response.Content))).access_token\n# get list of your instances\n$headers = @{}\n$headers.Add(\"Authorization\",\"Bearer $access_token\")\n$headers.Add(\"x-request-id\",\"51A87ECD-754E-4104-9C54-D01AD0F83406\")\nInvoke-WebRequest -Uri 'https://api.contabo.com/v1/compute/instances' -Method 'GET' -Headers $headers\n```\n\n### Using the Contabo API via the `cntb` CLI tool\n\n1. Download `cntb` for your operating system (MacOS, Windows and Linux supported) [here](https://github.com/contabo/cntb)\n2. Unzip the downloaded file\n3. You might move the executable to any location on your disk. You may update your `PATH` environment variable for easier invocation.\n4. Configure it once to use your credentials\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n   ```sh\n   cntb config set-credentials --oauth2-clientid=<ClientId from Customer Control Panel> --oauth2-client-secret=<ClientSecret from Customer Control Panel> --oauth2-user=<API User from Customer Control Panel> --oauth2-password='<API Password from Customer Control Panel>'\n   ```\n\n5. Use the CLI\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n   ```sh\n   # get list of your instances\n   cntb get instances\n   # help\n   cntb help\n   ```\n\n## API Overview\n\n### [Compute Management](#tag/Instances)\n\nThe Compute Management API allows you to manage compute resources (e.g. creation, deletion, starting, stopping) of VPS and VDS (please note that Storage VPS are not supported via API or CLI) as well as managing snapshots and custom images. It also offers you to take advantage of [cloud-init](https://cloud-init.io/) at least on our default / standard images (for custom images you'll need to provide cloud-init support packages). The API offers provisioning of cloud-init scripts via the `user_data` field.\n\nCustom images must be provided in `.qcow2` or `.iso` format. This gives you even more flexibility for setting up your environment.\n\n### [Object Storage](#tag/Object-Storages)\n\nThe Object Storage API allows you to order, upgrade, cancel and control the auto-scaling feature for [S3](https://en.wikipedia.org/wiki/Amazon_S3) compatible object storage. You may also get some usage statistics. You can only buy one object storage per location. In case you need more storage space in a location you can purchase more space or enable the auto-scaling feature to purchase automatically more storage space up to the specified monthly limit.\n\nPlease note that this is not the S3 compatible API. It is not documented here. The S3 compatible API needs to be used with the corresponding credentials, namely an `access_key` and `secret_key`. Those can be retrieved by invoking the User Management API. All purchased object storages in different locations share the same credentials. You are free to use S3 compatible tools like [`aws`](https://aws.amazon.com/cli/) cli or similar.\n\n### [Private Networking](#tag/Private-Networks)\n\nThe Private Networking API allows you to manage private networks / Virtual Private Clouds (VPC) for your Cloud VPS and VDS (please note that Storage VPS are not supported via API or CLI). Having a private network allows the associated instances to have a private and direct network connection. The traffic won't leave the data center and cannot be accessed by any other instance.\n\nWith this feature you can create multi layer systems, e.g. having a database server being only accessible from your application servers in one private network and keep the database replication in a second, separate network. This increases the speed as the traffic is NOT routed to the internet and also security as the traffic is within it's own secured VLAN.\n\nAdding a Cloud VPS or VDS to a private network requires a reinstallation to make sure that all relevant parts for private networking are in place. When adding the same instance to another private network it will require a restart in order to make additional virtual network interface cards (NICs) available.\n\nPlease note that for each instance being part of one or several private networks a payed add-on is required. You can automatically purchase it via the Compute Management API.\n\n### [Secrets Management](#tag/Secrets)\n\nYou can optionally save your passwords or public ssh keys using the Secrets Management API. You are not required to use it there will be no functional disadvantages.\n\nBy using that API you can easily reuse you public ssh keys when setting up different servers without the need to look them up every time. It can also be used to allow Contabo Supporters to access\nyour machine without sending the passwords via potentially unsecure emails.\n\n### [User Management](#tag/Users)\n\nIf you need to allow other persons or automation scripts to access specific API endpoints resp. resources the User Management API comes into play. With that API you are able to manage users having possibly restricted access. You are free to define those restrictions to fit your needs. So beside an arbitrary number of users you basically define any number of so called `roles`. Roles allows access and must be one of the following types:\n\n* `apiPermission`\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n   This allows you to specify a restriction to certain functions of an API by allowing control over POST (=Create), GET (=Read), PUT/PATCH (=Update) and DELETE (=Delete) methods for each API endpoint (URL) individually.\n* `resourcePermission`\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n   In order to restrict access to specific resources create a role with `resourcePermission` type by specifying any number of [tags](#tag-management). These tags need to be assigned to resources for them to take effect. E.g. a tag could be assigned to several compute resources. So that a user with that role (and of course access to the API endpoints via `apiPermission` role type) could only access those compute resources.\n\nThe `roles` are then assigned to a `user`. You can assign one or several roles regardless of the role's type. Of course you could also assign a user `admin` privileges without specifying any roles.\n\n### [Tag Management](#tag/Tags)\n\nThe Tag Management API allows you to manage your tags in order to organize your resources in a more convenient way. Simply assign a tag to resources like a compute resource to manage them.The assignments of tags to resources will also enable you to control access to these specific resources to users via the [User Management API](#user-management). For convenience reasons you might choose a color for tag. The Customer Control Panel will use that color to display the tags.\n\n## Requests\n\nThe Contabo API supports HTTP requests like mentioned below. Not every endpoint supports all methods. The allowed methods are listed within this documentation.\n\nMethod | Description\n---    | ---\nGET    | To retrieve information about a resource, use the GET method.<br>The data is returned as a JSON object. GET methods are read-only and do not affect any resources.\nPOST   | Issue a POST method to create a new object. Include all needed attributes in the request body encoded as JSON.\nPATCH  | Some resources support partial modification with PATCH,<br>which modifies specific attributes without updating the entire object representation.\nPUT    | Use the PUT method to update information about a resource.<br>PUT will set new values on the item without regard to their current values.\nDELETE | Use the DELETE method to destroy a resource in your account.<br>If it is not found, the operation will return a 4xx error and an appropriate message.\n\n## Responses\n\nUsually the Contabo API should respond to your requests. The data returned is in [JSON](https://www.json.org/) format allowing easy processing in any programming language or tools.\n\nAs common for HTTP requests you will get back a so called HTTP status code. This gives you overall\ninformation about success or error. The following table lists common HTTP status codes.\n\nPlease note that the description of the endpoints and methods are not listing all possibly status codes in detail as they are generic. Only special return codes with\ntheir resp. response data are explicitly listed.\n\nResponse Code | Description\n--- | ---\n200 | The response contains your requested information.\n201 | Your request was accepted. The resource was created.\n204 | Your request succeeded, there is no additional information returned.\n400 | Your request was malformed.\n401 | You did not supply valid authentication credentials.\n402 | Request refused as it requires additional payed service.\n403 | You are not allowed to perform the request.\n404 | No results were found for your request or resource does not exist.\n409 | Conflict with resources. For example violation of unique data constraints detected when trying to create or change resources.\n429 | Rate-limit reached. Please wait for some time before doing more requests.\n500 | We were unable to perform the request due to server-side problems. In such cases please retry or contact the support.\n\nNot every endpoint returns data. For example DELETE requests usually don't return any data. All others do return data. For easy handling the return values consists of metadata denoted with and underscore (\"_\") like `_links` or `_pagination`. The actual data is returned in a field called `data`. For convenience reasons this `data` field is always returned as an array even if it consists of only one single element.\n\nSome general details about Contabo API from [Contabo](https://contabo.com).\n",
    "servers": [
      {
        "url": "https://api.contabo.com"
      }
    ]
  }
}