openapi: 3.1.0 info: title: Twilio SendGrid Provisioning Account Offering API summary: The Twilio SendGrid Account Provisioning API provides a platform for Twilio SendGrid resellers to manage their customer accounts. description: 'The Twilio SendGrid Account Provisioning API provides a platform for Twilio SendGrid resellers to manage their customer accounts. This API is for companies that have a formal reseller partnership with Twilio SendGrid. You can access Twilio SendGrid sub-account functionality without becoming a reseller. If you require sub-account functionality, see the Twilio [SendGrid Subusers](https://docs.sendgrid.com/ui/account-and-settings/subusers) feature, which is available with [Pro and Premier plans](https://sendgrid.com/pricing/).' termsOfService: https://www.twilio.com/legal/tos contact: name: Twilio SendGrid Support url: https://support.sendgrid.com/hc/en-us license: name: MIT url: https://code.hq.twilio.com/twilio/sendgrid-oas/blob/main/LICENSE version: 1.0.0 x-sendgrid: libraryPackage: account_provisioning servers: - url: https://api.sendgrid.com description: for global users and subusers - url: https://api.eu.sendgrid.com description: for EU regional subusers security: - BearerAuth: [] tags: - name: Offering description: Twilio SendGrid Account Provisioning API offerings operations. paths: /v3/partners/accounts/{accountID}/offerings: parameters: - $ref: '#/components/parameters/AccountProvisioningAccountId' get: operationId: ListAccountOffering summary: Get account offerings description: Retrieves offering information about the specified account. tags: - Offering responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/AccountProvisioningOfferingList' '400': $ref: '#/components/responses/AccountProvisioningErrorResponse400' '401': $ref: '#/components/responses/AccountProvisioningErrorResponse401' '403': $ref: '#/components/responses/AccountProvisioningErrorResponse403' '404': $ref: '#/components/responses/AccountProvisioningErrorResponse404' '500': $ref: '#/components/responses/AccountProvisioningErrorResponse500' '502': $ref: '#/components/responses/AccountProvisioningErrorResponse502' '503': $ref: '#/components/responses/AccountProvisioningErrorResponse503' '504': $ref: '#/components/responses/AccountProvisioningErrorResponse504' put: operationId: UpdateAccountOffering summary: Update account offerings description: Changes a package offering for the specified account. Please note that an account can have only one package offering. Also associates one or more add-on offerings such as Marketing Campaigns, Dedicated IP Addresses, and Expert Services to the specified account. tags: - Offering requestBody: required: true content: application/json: schema: title: OfferingsToAdd type: object properties: offerings: type: array description: List of offerings to assign to account. items: $ref: '#/components/schemas/AccountProvisioningOfferingV1' required: - offerings example: offerings: - name: org.ei.free.v1 type: package quantity: 1 responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/AccountProvisioningOfferingList' '400': $ref: '#/components/responses/AccountProvisioningErrorResponse400' '401': $ref: '#/components/responses/AccountProvisioningErrorResponse401' '403': $ref: '#/components/responses/AccountProvisioningErrorResponse403' '500': $ref: '#/components/responses/AccountProvisioningErrorResponse500' '502': $ref: '#/components/responses/AccountProvisioningErrorResponse502' '503': $ref: '#/components/responses/AccountProvisioningErrorResponse503' '504': $ref: '#/components/responses/AccountProvisioningErrorResponse504' /v3/partners/offerings: get: operationId: ListOffering summary: Get all available offerings tags: - Offering description: Retrieves offerings available under the organization. responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/AccountProvisioningCatalog' '400': $ref: '#/components/responses/AccountProvisioningErrorResponse400' '401': $ref: '#/components/responses/AccountProvisioningErrorResponse401' '403': $ref: '#/components/responses/AccountProvisioningErrorResponse403' '404': $ref: '#/components/responses/AccountProvisioningErrorResponse404' '500': $ref: '#/components/responses/AccountProvisioningErrorResponse500' '502': $ref: '#/components/responses/AccountProvisioningErrorResponse502' '503': $ref: '#/components/responses/AccountProvisioningErrorResponse503' '504': $ref: '#/components/responses/AccountProvisioningErrorResponse504' components: schemas: Type: type: string enum: - package - addon AccountProvisioningCatalog: title: Catalog type: object properties: catalog: type: array items: title: CatalogEntry type: object properties: offering: $ref: '#/components/schemas/AccountProvisioningOfferingV1' entitlements: type: object description: Set of entitlements the specified offering comes with properties: email_sends_max_monthly: type: integer format: int64 description: Total number of email sends per month ip_count: type: integer format: int64 description: Number of dedicated IPs offered teammates_max_total: type: integer format: int64 description: Total number of teammates allowed users_max_total: type: integer format: int64 description: Total number of subusers allowed required: - catalog example: catalog: - offering: name: org.ei.free.v1 type: package quantity: 1 entitlements: email_sends_max_monthly: 10000 ip_count: 0 teammates_max_total: 0 users_max_total: 0 AccountProvisioningOfferingV1: title: Offering type: object description: An offering is a package (email infrastructure) or add-on (marketing campaigns, dedicated IP addresses, EASE) that an account can acquire. Each offering has a list of entitlements that indicate the benefits the account receives from the acquisition. properties: name: type: string description: Name of the offering type: type: string description: Defines the type of offering (e.g., package or addon). $ref: '#/components/schemas/Type' quantity: type: integer format: int64 description: Quantity of the specified addon to be added. If offering type is `package`, quantity must be 1. required: - name - type example: name: org.ei.free.v1 type: package quantity: 1 ErrorResponse: title: Error type: object properties: message: type: string description: The message representing the error from the API. field: type: string description: The field associated with the error. error_id: type: string description: ID representing the error as a unique nubmer. required: - message - field - error_id AccountProvisioningOfferingList: title: OfferingList type: object properties: offerings: type: array items: $ref: '#/components/schemas/AccountProvisioningOfferingV1' responses: AccountProvisioningErrorResponse401: description: Request lacks valid authentication credentials content: application/json: schema: title: Unauthorized type: object properties: errors: type: array items: $ref: '#/components/schemas/ErrorResponse' example: errors: - message: Failed to authenticate user field: '' error_id: 10-40100 AccountProvisioningErrorResponse403: description: Not authorized to make the request content: application/json: schema: title: Forbidden type: object properties: errors: type: array items: $ref: '#/components/schemas/ErrorResponse' example: errors: - message: The authenticated user is not authorized to perfrom this request field: '' error_id: 10-40300 AccountProvisioningErrorResponse504: description: Endpoint request timed out content: application/json: schema: title: Endpoint request timed out type: object properties: errors: type: array items: $ref: '#/components/schemas/ErrorResponse' example: errors: - message: Endpoint request timed out field: '' error_id: 10-50400 AccountProvisioningErrorResponse503: description: Service Unavailable content: application/json: schema: title: Service Unavailable type: object properties: errors: type: array items: $ref: '#/components/schemas/ErrorResponse' example: errors: - message: Service Unavailable field: '' error_id: 10-50300 AccountProvisioningErrorResponse404: description: Not Found content: application/json: schema: title: Not Found type: object properties: errors: type: array items: $ref: '#/components/schemas/ErrorResponse' example: errors: - message: No such endpoint field: '' error_id: 10-40400 AccountProvisioningErrorResponse500: description: Internal Server Error content: application/json: schema: title: InternalServerError type: object properties: errors: type: array items: $ref: '#/components/schemas/ErrorResponse' example: errors: - message: Something went wrong field: '' error_id: 10-50000 AccountProvisioningErrorResponse400: description: The request was formatted incorrectly or missing required parameters. content: application/json: schema: title: Bad Request type: object properties: errors: type: array items: $ref: '#/components/schemas/ErrorResponse' required: - errors example: errors: - message: Field must be a valid email field: email error_id: 10-40002 - message: Field must be formatted using the E.164 standard consisting of [+] [country code] [subscriber number including area code] and can have a maximum of fifteen digits. field: phone error_id: 10-40010 - message: Field must be a valid URL field: company_website error_id: 10-40008 AccountProvisioningErrorResponse502: description: Bad Gateway content: application/json: schema: title: Bad Gateway type: object properties: errors: type: array items: $ref: '#/components/schemas/ErrorResponse' example: errors: - message: Bad Gateway field: '' error_id: 10-50200 parameters: AccountProvisioningAccountId: name: accountID in: path description: Twilio SendGrid account ID schema: type: string required: true example: sg2a2bcd3ef4ab5c67d8efab91c01de2fa securitySchemes: BearerAuth: type: http scheme: bearer description: Twilio SendGrid requires you to authenticate with its APIs using an API key. The API key must be sent as a bearer token in the Authorization header. externalDocs: description: Twilio SendGrid's official developer documentation. url: https://www.twilio.com/docs/sendgrid