> ## Documentation Index
> Fetch the complete documentation index at: https://api-docs.helpyousponsor.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Restore one archived sponsorship

> Restores one archived donor-to-recipient sponsorship for the authenticated admin's client, restores its commitment schedule, resets failed-payment retries, recalculates recipient sponsorship status, and refreshes table caches. The donor and recipient must both still be active. Requires permission: `manage_programs` and is gated by the `disable_sponsorship_restore` client restriction.



## OpenAPI

````yaml post /admin/sponsorships/{donor_entity_id}/restore
openapi: 3.0.0
info:
  title: Gratona API
  description: >-
    REST API for the Gratona fundraising platform, including donor, donation,
    sponsorship, program, event, and integration workflows. Endpoints are
    organized by tag. Most endpoints require either a Passport bearer token or
    an issued API key — see the Security Schemes section.
  contact:
    name: Gratona Engineering
    url: https://gratona.com
    email: devs@gratona.com
  version: 1.0.0
servers:
  - url: https://api.gratona.com/v1
    description: Server Version 1.0.0
security: []
tags:
  - name: Auth
    description: >-
      Login, signup, logout, password reset, and email verification for admin
      users and donors.
  - name: Donors
    description: >-
      Donor records: CRUD, profile fields, household linkage, search, filters,
      merge, and duplicate detection.
  - name: Donations
    description: >-
      Individual donation records, recurring commitments, soft credits, refunds,
      designations, and exports.
  - name: Sponsorships
    description: >-
      Donor-to-entity sponsorship relationships, lifecycle transitions, and
      sponsorship-specific filters.
  - name: Entities
    description: >-
      Recipient records (children, families, projects, animals, etc.), their
      status, and entity-level fields.
  - name: Programs
    description: >-
      Program / campaign configuration: hierarchy, settings, and program-level
      metadata.
  - name: Forms
    description: >-
      Custom form builder (HysForm), form fields, standardized donor fields, and
      field migrations.
  - name: Trips
    description: >-
      Mission-trip management: trips, participants, budgets, tasks,
      e-signatures, fundraising milestones, and background checks.
  - name: Communications
    description: >-
      Email templates, SMS, newsletters, donor email manager, and per-donor
      notes.
  - name: Payments
    description: >-
      Payment-gateway management (Stripe, PayPal, Flutterwave, QuickBooks).
      Excludes inbound webhooks — see the Webhooks tag.
  - name: Reports
    description: Dashboards, analytics, scheduled reports, and exports.
  - name: Admin
    description: >-
      Client-account administration: users, groups/permissions, settings,
      integrations, and account lifecycle.
  - name: Donor Portal
    description: >-
      Endpoints consumed by the donor-facing portal (donor login, dashboard,
      donation history, messages).
  - name: Recipient Portal
    description: Endpoints consumed by the recipient-facing portal.
  - name: Public
    description: >-
      Unauthenticated public endpoints: donor signup, public trip pages,
      peer-to-peer campaigns, public checkout.
  - name: Webhooks
    description: >-
      Inbound webhooks from third parties (Stripe, PayPal, Flutterwave, Checkr,
      DropboxSign). Annotated minimally for reference; payload shapes are owned
      by the upstream provider.
  - name: Client
    description: Client
  - name: Email Settings
    description: Email Settings
  - name: Admin Dashboard
    description: Admin Dashboard
  - name: Historical Archived Updates
    description: Historical Archived Updates
  - name: Team & access
    description: Team & access
  - name: Files
    description: Files
  - name: Wrapped
    description: Wrapped
  - name: Donor SignUp
    description: Donor SignUp
  - name: Frontend
    description: Frontend
  - name: User
    description: User
paths:
  /admin/sponsorships/{donor_entity_id}/restore:
    post:
      tags:
        - Sponsorships
      summary: Restore one archived sponsorship
      description: >-
        Restores one archived donor-to-recipient sponsorship for the
        authenticated admin's client, restores its commitment schedule, resets
        failed-payment retries, recalculates recipient sponsorship status, and
        refreshes table caches. The donor and recipient must both still be
        active. Requires permission: `manage_programs` and is gated by the
        `disable_sponsorship_restore` client restriction.
      operationId: 6f2491ac8fda088832421a91aed25820
      parameters:
        - name: donor_entity_id
          in: path
          description: >-
            Archived sponsorship relationship ID to restore. The relationship
            must belong to the authenticated admin's client.
          required: true
          schema:
            type: integer
            format: int64
          example: 4812
      requestBody:
        description: >-
          Optional schedule date used to resume the restored recurring
          commitment.
        required: false
        content:
          application/json:
            schema:
              properties:
                next_action_date:
                  description: >-
                    Date when the restored commitment should next be processed.
                    Validation: `nullable|date_format:Y-m-d`; when omitted, the
                    commitment's existing schedule date is preserved.
                  type: string
                  format: date
                  example: '2026-08-01'
                  nullable: true
                force_restore:
                  description: >-
                    Explicitly confirms restoration when the recipient is
                    already at capacity or this restore would exceed capacity.
                    Omit on the first request so the API can return current
                    donor details for confirmation.
                  type: boolean
                  example: true
                  nullable: true
                preview_token:
                  description: >-
                    Short-lived token binding the mutation to the exact
                    previewed sponsorship and billing state. Required while
                    sponsorship lifecycle controls are enabled.
                  type: string
                  example: eyJpdiI6Ik...
              type: object
      responses:
        '200':
          description: Sponsorship and its commitment were restored.
          content:
            application/json:
              schema:
                properties:
                  message:
                    type: string
                    example: Sponsorship Successfully Restored.
                type: object
        '401':
          description: The request is not authenticated.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedResponse'
        '403':
          description: >-
            The admin lacks program-management authority, restoration is
            restricted, or the relationship belongs to another client.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '404':
          description: >-
            No restorable sponsorship exists for this tenant and relationship
            ID.
          content:
            application/json:
              schema:
                properties:
                  message:
                    type: string
                    example: 'Error: Sponsorship could not be restored.'
                  skipped_count:
                    type: integer
                    example: 1
                  skipped_ids:
                    type: array
                    items:
                      type: integer
                      format: int64
                    example:
                      - 4812
                  skipped:
                    type: array
                    items:
                      properties:
                        donor_entity_id:
                          type: integer
                          format: int64
                          example: 4812
                        reason:
                          type: string
                          example: donor_inactive
                      type: object
                type: object
        '409':
          description: >-
            The recipient is already at sponsorship capacity or this restore
            would exceed capacity, requiring explicit confirmation.
          content:
            application/json:
              schema:
                properties:
                  message:
                    type: string
                    example: One or more recipients are already fully sponsored.
                  error_code:
                    type: string
                    example: RECIPIENT_FULLY_SPONSORED
                  conflicts:
                    type: array
                    items:
                      type: object
                type: object
        '422':
          description: The next action date failed validation.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ValidationErrorResponse'
      security:
        - apiKeyAuth: []
        - bearerAuth: []
components:
  schemas:
    UnauthorizedResponse:
      title: UnauthorizedResponse
      description: >-
        Returned with HTTP 401 when the request lacks a valid Passport bearer
        token, a valid `X-HYS-API-Key`, or a valid session. The body is the
        simple `{message, status}` envelope emitted by `AuthenticateApiOrKey`.
      required:
        - message
        - status
      properties:
        message:
          description: >-
            Always the literal string `Unauthorized` from the `auth.api_or_key`
            middleware. Login endpoints return `Invalid Credentials` instead.
          type: string
          example: Unauthorized
        status:
          type: string
          example: error
      type: object
    ErrorResponse:
      title: ErrorResponse
      description: >-
        Generic error envelope used by most controllers. Most error responses
        pair a human-readable `message` with `status: error`. Some endpoints
        additionally include `errors` (validator errors), `error` (legacy
        single-error string), `code`, or domain-specific context fields.
      required:
        - message
      properties:
        message:
          description: Human-readable error message.
          type: string
          example: Something went wrong. Please try again.
        status:
          description: >-
            Always the literal string `error` for failures. Some endpoints omit
            this field.
          type: string
          example: error
        error:
          description: Legacy single error code/string used by older endpoints.
          type: string
          example: invalid_request
          nullable: true
        code:
          description: >-
            Optional application-level error code (not all endpoints populate
            this).
          type: string
          example: DONOR_NOT_FOUND
          nullable: true
      type: object
    ValidationErrorResponse:
      title: ValidationErrorResponse
      description: >-
        Returned with HTTP 422 when `Validator::make($data, $rules)` fails. The
        `errors` map is keyed by the failing field name; each value is an array
        of human-readable error messages for that field. Most controllers also
        include a top-level `status: error`.
      required:
        - errors
      properties:
        errors:
          description: >-
            Map of field name to array of validator error messages. Example:
            `{email: [The email field is required.], amount: [The amount must be
            a number.]}`.
          type: object
          additionalProperties:
            type: array
            items:
              type: string
        status:
          description: Always the literal string `error`.
          type: string
          example: error
        message:
          description: >-
            Optional summary message — present on some endpoints, absent on
            others.
          type: string
          example: The given data was invalid.
          nullable: true
      type: object
  securitySchemes:
    apiKeyAuth:
      type: apiKey
      description: Gratona API key sent with the compatibility header X-HYS-API-Key.
      name: X-HYS-API-Key
      in: header
    bearerAuth:
      type: http
      description: Passport bearer token authentication for legacy admin sessions.
      scheme: bearer
      bearerFormat: JWT

````

This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.