azure-native.appplatform.BuildpackBinding
Explore with Pulumi AI
Buildpack Binding Resource object Azure REST API version: 2023-05-01-preview. Prior API version in Azure Native 1.x: 2022-01-01-preview.
Other available API versions: 2023-07-01-preview, 2023-09-01-preview, 2023-11-01-preview, 2023-12-01, 2024-01-01-preview, 2024-05-01-preview.
Example Usage
BuildpackBinding_CreateOrUpdate
using System.Collections.Generic;
using System.Linq;
using Pulumi;
using AzureNative = Pulumi.AzureNative;
return await Deployment.RunAsync(() =>
{
var buildpackBinding = new AzureNative.AppPlatform.BuildpackBinding("buildpackBinding", new()
{
BuildServiceName = "default",
BuilderName = "default",
BuildpackBindingName = "myBuildpackBinding",
Properties = new AzureNative.AppPlatform.Inputs.BuildpackBindingPropertiesArgs
{
BindingType = AzureNative.AppPlatform.BindingType.ApplicationInsights,
LaunchProperties = new AzureNative.AppPlatform.Inputs.BuildpackBindingLaunchPropertiesArgs
{
Properties =
{
{ "abc", "def" },
{ "any-string", "any-string" },
{ "sampling-rate", "12.0" },
},
Secrets =
{
{ "connection-string", "XXXXXXXXXXXXXXXXX=XXXXXXXXXXXXX-XXXXXXXXXXXXXXXXXXX;XXXXXXXXXXXXXXXXX=XXXXXXXXXXXXXXXXXXX" },
},
},
},
ResourceGroupName = "myResourceGroup",
ServiceName = "myservice",
});
});
package main
import (
appplatform "github.com/pulumi/pulumi-azure-native-sdk/appplatform/v2"
"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
)
func main() {
pulumi.Run(func(ctx *pulumi.Context) error {
_, err := appplatform.NewBuildpackBinding(ctx, "buildpackBinding", &appplatform.BuildpackBindingArgs{
BuildServiceName: pulumi.String("default"),
BuilderName: pulumi.String("default"),
BuildpackBindingName: pulumi.String("myBuildpackBinding"),
Properties: &appplatform.BuildpackBindingPropertiesArgs{
BindingType: pulumi.String(appplatform.BindingTypeApplicationInsights),
LaunchProperties: &appplatform.BuildpackBindingLaunchPropertiesArgs{
Properties: pulumi.StringMap{
"abc": pulumi.String("def"),
"any-string": pulumi.String("any-string"),
"sampling-rate": pulumi.String("12.0"),
},
Secrets: pulumi.StringMap{
"connection-string": pulumi.String("XXXXXXXXXXXXXXXXX=XXXXXXXXXXXXX-XXXXXXXXXXXXXXXXXXX;XXXXXXXXXXXXXXXXX=XXXXXXXXXXXXXXXXXXX"),
},
},
},
ResourceGroupName: pulumi.String("myResourceGroup"),
ServiceName: pulumi.String("myservice"),
})
if err != nil {
return err
}
return nil
})
}
package generated_program;
import com.pulumi.Context;
import com.pulumi.Pulumi;
import com.pulumi.core.Output;
import com.pulumi.azurenative.appplatform.BuildpackBinding;
import com.pulumi.azurenative.appplatform.BuildpackBindingArgs;
import com.pulumi.azurenative.appplatform.inputs.BuildpackBindingPropertiesArgs;
import com.pulumi.azurenative.appplatform.inputs.BuildpackBindingLaunchPropertiesArgs;
import java.util.List;
import java.util.ArrayList;
import java.util.Map;
import java.io.File;
import java.nio.file.Files;
import java.nio.file.Paths;
public class App {
public static void main(String[] args) {
Pulumi.run(App::stack);
}
public static void stack(Context ctx) {
var buildpackBinding = new BuildpackBinding("buildpackBinding", BuildpackBindingArgs.builder()
.buildServiceName("default")
.builderName("default")
.buildpackBindingName("myBuildpackBinding")
.properties(BuildpackBindingPropertiesArgs.builder()
.bindingType("ApplicationInsights")
.launchProperties(BuildpackBindingLaunchPropertiesArgs.builder()
.properties(Map.ofEntries(
Map.entry("abc", "def"),
Map.entry("any-string", "any-string"),
Map.entry("sampling-rate", "12.0")
))
.secrets(Map.of("connection-string", "XXXXXXXXXXXXXXXXX=XXXXXXXXXXXXX-XXXXXXXXXXXXXXXXXXX;XXXXXXXXXXXXXXXXX=XXXXXXXXXXXXXXXXXXX"))
.build())
.build())
.resourceGroupName("myResourceGroup")
.serviceName("myservice")
.build());
}
}
import pulumi
import pulumi_azure_native as azure_native
buildpack_binding = azure_native.appplatform.BuildpackBinding("buildpackBinding",
build_service_name="default",
builder_name="default",
buildpack_binding_name="myBuildpackBinding",
properties={
"binding_type": azure_native.appplatform.BindingType.APPLICATION_INSIGHTS,
"launch_properties": {
"properties": {
"abc": "def",
"any_string": "any-string",
"sampling_rate": "12.0",
},
"secrets": {
"connection_string": "XXXXXXXXXXXXXXXXX=XXXXXXXXXXXXX-XXXXXXXXXXXXXXXXXXX;XXXXXXXXXXXXXXXXX=XXXXXXXXXXXXXXXXXXX",
},
},
},
resource_group_name="myResourceGroup",
service_name="myservice")
import * as pulumi from "@pulumi/pulumi";
import * as azure_native from "@pulumi/azure-native";
const buildpackBinding = new azure_native.appplatform.BuildpackBinding("buildpackBinding", {
buildServiceName: "default",
builderName: "default",
buildpackBindingName: "myBuildpackBinding",
properties: {
bindingType: azure_native.appplatform.BindingType.ApplicationInsights,
launchProperties: {
properties: {
abc: "def",
"any-string": "any-string",
"sampling-rate": "12.0",
},
secrets: {
"connection-string": "XXXXXXXXXXXXXXXXX=XXXXXXXXXXXXX-XXXXXXXXXXXXXXXXXXX;XXXXXXXXXXXXXXXXX=XXXXXXXXXXXXXXXXXXX",
},
},
},
resourceGroupName: "myResourceGroup",
serviceName: "myservice",
});
resources:
buildpackBinding:
type: azure-native:appplatform:BuildpackBinding
properties:
buildServiceName: default
builderName: default
buildpackBindingName: myBuildpackBinding
properties:
bindingType: ApplicationInsights
launchProperties:
properties:
abc: def
any-string: any-string
sampling-rate: '12.0'
secrets:
connection-string: XXXXXXXXXXXXXXXXX=XXXXXXXXXXXXX-XXXXXXXXXXXXXXXXXXX;XXXXXXXXXXXXXXXXX=XXXXXXXXXXXXXXXXXXX
resourceGroupName: myResourceGroup
serviceName: myservice
Create BuildpackBinding Resource
Resources are created with functions called constructors. To learn more about declaring and configuring resources, see Resources.
Constructor syntax
new BuildpackBinding(name: string, args: BuildpackBindingArgs, opts?: CustomResourceOptions);
@overload
def BuildpackBinding(resource_name: str,
args: BuildpackBindingArgs,
opts: Optional[ResourceOptions] = None)
@overload
def BuildpackBinding(resource_name: str,
opts: Optional[ResourceOptions] = None,
build_service_name: Optional[str] = None,
builder_name: Optional[str] = None,
resource_group_name: Optional[str] = None,
service_name: Optional[str] = None,
buildpack_binding_name: Optional[str] = None,
properties: Optional[BuildpackBindingPropertiesArgs] = None)
func NewBuildpackBinding(ctx *Context, name string, args BuildpackBindingArgs, opts ...ResourceOption) (*BuildpackBinding, error)
public BuildpackBinding(string name, BuildpackBindingArgs args, CustomResourceOptions? opts = null)
public BuildpackBinding(String name, BuildpackBindingArgs args)
public BuildpackBinding(String name, BuildpackBindingArgs args, CustomResourceOptions options)
type: azure-native:appplatform:BuildpackBinding
properties: # The arguments to resource properties.
options: # Bag of options to control resource's behavior.
Parameters
- name string
- The unique name of the resource.
- args BuildpackBindingArgs
- The arguments to resource properties.
- opts CustomResourceOptions
- Bag of options to control resource's behavior.
- resource_name str
- The unique name of the resource.
- args BuildpackBindingArgs
- The arguments to resource properties.
- opts ResourceOptions
- Bag of options to control resource's behavior.
- ctx Context
- Context object for the current deployment.
- name string
- The unique name of the resource.
- args BuildpackBindingArgs
- The arguments to resource properties.
- opts ResourceOption
- Bag of options to control resource's behavior.
- name string
- The unique name of the resource.
- args BuildpackBindingArgs
- The arguments to resource properties.
- opts CustomResourceOptions
- Bag of options to control resource's behavior.
- name String
- The unique name of the resource.
- args BuildpackBindingArgs
- The arguments to resource properties.
- options CustomResourceOptions
- Bag of options to control resource's behavior.
Constructor example
The following reference example uses placeholder values for all input properties.
var buildpackBindingResource = new AzureNative.AppPlatform.BuildpackBinding("buildpackBindingResource", new()
{
BuildServiceName = "string",
BuilderName = "string",
ResourceGroupName = "string",
ServiceName = "string",
BuildpackBindingName = "string",
Properties = new AzureNative.AppPlatform.Inputs.BuildpackBindingPropertiesArgs
{
BindingType = "string",
LaunchProperties = new AzureNative.AppPlatform.Inputs.BuildpackBindingLaunchPropertiesArgs
{
Properties =
{
{ "string", "string" },
},
Secrets =
{
{ "string", "string" },
},
},
},
});
example, err := appplatform.NewBuildpackBinding(ctx, "buildpackBindingResource", &appplatform.BuildpackBindingArgs{
BuildServiceName: pulumi.String("string"),
BuilderName: pulumi.String("string"),
ResourceGroupName: pulumi.String("string"),
ServiceName: pulumi.String("string"),
BuildpackBindingName: pulumi.String("string"),
Properties: &appplatform.BuildpackBindingPropertiesArgs{
BindingType: pulumi.String("string"),
LaunchProperties: &appplatform.BuildpackBindingLaunchPropertiesArgs{
Properties: pulumi.StringMap{
"string": pulumi.String("string"),
},
Secrets: pulumi.StringMap{
"string": pulumi.String("string"),
},
},
},
})
var buildpackBindingResource = new BuildpackBinding("buildpackBindingResource", BuildpackBindingArgs.builder()
.buildServiceName("string")
.builderName("string")
.resourceGroupName("string")
.serviceName("string")
.buildpackBindingName("string")
.properties(BuildpackBindingPropertiesArgs.builder()
.bindingType("string")
.launchProperties(BuildpackBindingLaunchPropertiesArgs.builder()
.properties(Map.of("string", "string"))
.secrets(Map.of("string", "string"))
.build())
.build())
.build());
buildpack_binding_resource = azure_native.appplatform.BuildpackBinding("buildpackBindingResource",
build_service_name="string",
builder_name="string",
resource_group_name="string",
service_name="string",
buildpack_binding_name="string",
properties={
"bindingType": "string",
"launchProperties": {
"properties": {
"string": "string",
},
"secrets": {
"string": "string",
},
},
})
const buildpackBindingResource = new azure_native.appplatform.BuildpackBinding("buildpackBindingResource", {
buildServiceName: "string",
builderName: "string",
resourceGroupName: "string",
serviceName: "string",
buildpackBindingName: "string",
properties: {
bindingType: "string",
launchProperties: {
properties: {
string: "string",
},
secrets: {
string: "string",
},
},
},
});
type: azure-native:appplatform:BuildpackBinding
properties:
buildServiceName: string
builderName: string
buildpackBindingName: string
properties:
bindingType: string
launchProperties:
properties:
string: string
secrets:
string: string
resourceGroupName: string
serviceName: string
BuildpackBinding Resource Properties
To learn more about resource properties and how to use them, see Inputs and Outputs in the Architecture and Concepts docs.
Inputs
The BuildpackBinding resource accepts the following input properties:
- Build
Service stringName - The name of the build service resource.
- Builder
Name string - The name of the builder resource.
- Resource
Group stringName - The name of the resource group that contains the resource. You can obtain this value from the Azure Resource Manager API or the portal.
- Service
Name string - The name of the Service resource.
- Buildpack
Binding stringName - The name of the Buildpack Binding Name
- Properties
Pulumi.
Azure Native. App Platform. Inputs. Buildpack Binding Properties - Properties of a buildpack binding
- Build
Service stringName - The name of the build service resource.
- Builder
Name string - The name of the builder resource.
- Resource
Group stringName - The name of the resource group that contains the resource. You can obtain this value from the Azure Resource Manager API or the portal.
- Service
Name string - The name of the Service resource.
- Buildpack
Binding stringName - The name of the Buildpack Binding Name
- Properties
Buildpack
Binding Properties Args - Properties of a buildpack binding
- build
Service StringName - The name of the build service resource.
- builder
Name String - The name of the builder resource.
- resource
Group StringName - The name of the resource group that contains the resource. You can obtain this value from the Azure Resource Manager API or the portal.
- service
Name String - The name of the Service resource.
- buildpack
Binding StringName - The name of the Buildpack Binding Name
- properties
Buildpack
Binding Properties - Properties of a buildpack binding
- build
Service stringName - The name of the build service resource.
- builder
Name string - The name of the builder resource.
- resource
Group stringName - The name of the resource group that contains the resource. You can obtain this value from the Azure Resource Manager API or the portal.
- service
Name string - The name of the Service resource.
- buildpack
Binding stringName - The name of the Buildpack Binding Name
- properties
Buildpack
Binding Properties - Properties of a buildpack binding
- build_
service_ strname - The name of the build service resource.
- builder_
name str - The name of the builder resource.
- resource_
group_ strname - The name of the resource group that contains the resource. You can obtain this value from the Azure Resource Manager API or the portal.
- service_
name str - The name of the Service resource.
- buildpack_
binding_ strname - The name of the Buildpack Binding Name
- properties
Buildpack
Binding Properties Args - Properties of a buildpack binding
- build
Service StringName - The name of the build service resource.
- builder
Name String - The name of the builder resource.
- resource
Group StringName - The name of the resource group that contains the resource. You can obtain this value from the Azure Resource Manager API or the portal.
- service
Name String - The name of the Service resource.
- buildpack
Binding StringName - The name of the Buildpack Binding Name
- properties Property Map
- Properties of a buildpack binding
Outputs
All input properties are implicitly available as output properties. Additionally, the BuildpackBinding resource produces the following output properties:
- Id string
- The provider-assigned unique ID for this managed resource.
- Name string
- The name of the resource.
- System
Data Pulumi.Azure Native. App Platform. Outputs. System Data Response - Metadata pertaining to creation and last modification of the resource.
- Type string
- The type of the resource.
- Id string
- The provider-assigned unique ID for this managed resource.
- Name string
- The name of the resource.
- System
Data SystemData Response - Metadata pertaining to creation and last modification of the resource.
- Type string
- The type of the resource.
- id String
- The provider-assigned unique ID for this managed resource.
- name String
- The name of the resource.
- system
Data SystemData Response - Metadata pertaining to creation and last modification of the resource.
- type String
- The type of the resource.
- id string
- The provider-assigned unique ID for this managed resource.
- name string
- The name of the resource.
- system
Data SystemData Response - Metadata pertaining to creation and last modification of the resource.
- type string
- The type of the resource.
- id str
- The provider-assigned unique ID for this managed resource.
- name str
- The name of the resource.
- system_
data SystemData Response - Metadata pertaining to creation and last modification of the resource.
- type str
- The type of the resource.
- id String
- The provider-assigned unique ID for this managed resource.
- name String
- The name of the resource.
- system
Data Property Map - Metadata pertaining to creation and last modification of the resource.
- type String
- The type of the resource.
Supporting Types
BindingType, BindingTypeArgs
- Application
Insights - ApplicationInsights
- Apache
Sky Walking - ApacheSkyWalking
- App
Dynamics - AppDynamics
- Dynatrace
- Dynatrace
- New
Relic - NewRelic
- Elastic
APM - ElasticAPM
- CACertificates
- CACertificates
- Binding
Type Application Insights - ApplicationInsights
- Binding
Type Apache Sky Walking - ApacheSkyWalking
- Binding
Type App Dynamics - AppDynamics
- Binding
Type Dynatrace - Dynatrace
- Binding
Type New Relic - NewRelic
- Binding
Type Elastic APM - ElasticAPM
- Binding
Type CACertificates - CACertificates
- Application
Insights - ApplicationInsights
- Apache
Sky Walking - ApacheSkyWalking
- App
Dynamics - AppDynamics
- Dynatrace
- Dynatrace
- New
Relic - NewRelic
- Elastic
APM - ElasticAPM
- CACertificates
- CACertificates
- Application
Insights - ApplicationInsights
- Apache
Sky Walking - ApacheSkyWalking
- App
Dynamics - AppDynamics
- Dynatrace
- Dynatrace
- New
Relic - NewRelic
- Elastic
APM - ElasticAPM
- CACertificates
- CACertificates
- APPLICATION_INSIGHTS
- ApplicationInsights
- APACHE_SKY_WALKING
- ApacheSkyWalking
- APP_DYNAMICS
- AppDynamics
- DYNATRACE
- Dynatrace
- NEW_RELIC
- NewRelic
- ELASTIC_APM
- ElasticAPM
- CA_CERTIFICATES
- CACertificates
- "Application
Insights" - ApplicationInsights
- "Apache
Sky Walking" - ApacheSkyWalking
- "App
Dynamics" - AppDynamics
- "Dynatrace"
- Dynatrace
- "New
Relic" - NewRelic
- "Elastic
APM" - ElasticAPM
- "CACertificates"
- CACertificates
BuildpackBindingLaunchProperties, BuildpackBindingLaunchPropertiesArgs
- Properties Dictionary<string, string>
- Non-sensitive properties for launchProperties
- Secrets Dictionary<string, string>
- Sensitive properties for launchProperties
- Properties map[string]string
- Non-sensitive properties for launchProperties
- Secrets map[string]string
- Sensitive properties for launchProperties
- properties Map<String,String>
- Non-sensitive properties for launchProperties
- secrets Map<String,String>
- Sensitive properties for launchProperties
- properties {[key: string]: string}
- Non-sensitive properties for launchProperties
- secrets {[key: string]: string}
- Sensitive properties for launchProperties
- properties Mapping[str, str]
- Non-sensitive properties for launchProperties
- secrets Mapping[str, str]
- Sensitive properties for launchProperties
- properties Map<String>
- Non-sensitive properties for launchProperties
- secrets Map<String>
- Sensitive properties for launchProperties
BuildpackBindingLaunchPropertiesResponse, BuildpackBindingLaunchPropertiesResponseArgs
- Properties Dictionary<string, string>
- Non-sensitive properties for launchProperties
- Secrets Dictionary<string, string>
- Sensitive properties for launchProperties
- Properties map[string]string
- Non-sensitive properties for launchProperties
- Secrets map[string]string
- Sensitive properties for launchProperties
- properties Map<String,String>
- Non-sensitive properties for launchProperties
- secrets Map<String,String>
- Sensitive properties for launchProperties
- properties {[key: string]: string}
- Non-sensitive properties for launchProperties
- secrets {[key: string]: string}
- Sensitive properties for launchProperties
- properties Mapping[str, str]
- Non-sensitive properties for launchProperties
- secrets Mapping[str, str]
- Sensitive properties for launchProperties
- properties Map<String>
- Non-sensitive properties for launchProperties
- secrets Map<String>
- Sensitive properties for launchProperties
BuildpackBindingProperties, BuildpackBindingPropertiesArgs
- Binding
Type string | Pulumi.Azure Native. App Platform. Binding Type - Buildpack Binding Type
- Launch
Properties Pulumi.Azure Native. App Platform. Inputs. Buildpack Binding Launch Properties - The object describes the buildpack binding launch properties
- Binding
Type string | BindingType - Buildpack Binding Type
- Launch
Properties BuildpackBinding Launch Properties - The object describes the buildpack binding launch properties
- binding
Type String | BindingType - Buildpack Binding Type
- launch
Properties BuildpackBinding Launch Properties - The object describes the buildpack binding launch properties
- binding
Type string | BindingType - Buildpack Binding Type
- launch
Properties BuildpackBinding Launch Properties - The object describes the buildpack binding launch properties
- binding_
type str | BindingType - Buildpack Binding Type
- launch_
properties BuildpackBinding Launch Properties - The object describes the buildpack binding launch properties
- binding
Type String | "ApplicationInsights" | "Apache Sky Walking" | "App Dynamics" | "Dynatrace" | "New Relic" | "Elastic APM" | "CACertificates" - Buildpack Binding Type
- launch
Properties Property Map - The object describes the buildpack binding launch properties
BuildpackBindingPropertiesResponse, BuildpackBindingPropertiesResponseArgs
- Provisioning
State string - State of the Buildpack Binding.
- Binding
Type string - Buildpack Binding Type
- Launch
Properties Pulumi.Azure Native. App Platform. Inputs. Buildpack Binding Launch Properties Response - The object describes the buildpack binding launch properties
- Provisioning
State string - State of the Buildpack Binding.
- Binding
Type string - Buildpack Binding Type
- Launch
Properties BuildpackBinding Launch Properties Response - The object describes the buildpack binding launch properties
- provisioning
State String - State of the Buildpack Binding.
- binding
Type String - Buildpack Binding Type
- launch
Properties BuildpackBinding Launch Properties Response - The object describes the buildpack binding launch properties
- provisioning
State string - State of the Buildpack Binding.
- binding
Type string - Buildpack Binding Type
- launch
Properties BuildpackBinding Launch Properties Response - The object describes the buildpack binding launch properties
- provisioning_
state str - State of the Buildpack Binding.
- binding_
type str - Buildpack Binding Type
- launch_
properties BuildpackBinding Launch Properties Response - The object describes the buildpack binding launch properties
- provisioning
State String - State of the Buildpack Binding.
- binding
Type String - Buildpack Binding Type
- launch
Properties Property Map - The object describes the buildpack binding launch properties
SystemDataResponse, SystemDataResponseArgs
- Created
At string - The timestamp of resource creation (UTC).
- Created
By string - The identity that created the resource.
- Created
By stringType - The type of identity that created the resource.
- Last
Modified stringAt - The timestamp of resource modification (UTC).
- Last
Modified stringBy - The identity that last modified the resource.
- Last
Modified stringBy Type - The type of identity that last modified the resource.
- Created
At string - The timestamp of resource creation (UTC).
- Created
By string - The identity that created the resource.
- Created
By stringType - The type of identity that created the resource.
- Last
Modified stringAt - The timestamp of resource modification (UTC).
- Last
Modified stringBy - The identity that last modified the resource.
- Last
Modified stringBy Type - The type of identity that last modified the resource.
- created
At String - The timestamp of resource creation (UTC).
- created
By String - The identity that created the resource.
- created
By StringType - The type of identity that created the resource.
- last
Modified StringAt - The timestamp of resource modification (UTC).
- last
Modified StringBy - The identity that last modified the resource.
- last
Modified StringBy Type - The type of identity that last modified the resource.
- created
At string - The timestamp of resource creation (UTC).
- created
By string - The identity that created the resource.
- created
By stringType - The type of identity that created the resource.
- last
Modified stringAt - The timestamp of resource modification (UTC).
- last
Modified stringBy - The identity that last modified the resource.
- last
Modified stringBy Type - The type of identity that last modified the resource.
- created_
at str - The timestamp of resource creation (UTC).
- created_
by str - The identity that created the resource.
- created_
by_ strtype - The type of identity that created the resource.
- last_
modified_ strat - The timestamp of resource modification (UTC).
- last_
modified_ strby - The identity that last modified the resource.
- last_
modified_ strby_ type - The type of identity that last modified the resource.
- created
At String - The timestamp of resource creation (UTC).
- created
By String - The identity that created the resource.
- created
By StringType - The type of identity that created the resource.
- last
Modified StringAt - The timestamp of resource modification (UTC).
- last
Modified StringBy - The identity that last modified the resource.
- last
Modified StringBy Type - The type of identity that last modified the resource.
Import
An existing resource can be imported using its type token, name, and identifier, e.g.
$ pulumi import azure-native:appplatform:BuildpackBinding myBuildpackBinding /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.AppPlatform/Spring/{serviceName}/buildServices/{buildServiceName}/builders/{builderName}/buildpackBindings/{buildpackBindingName}
To learn more about importing existing cloud resources, see Importing resources.
Package Details
- Repository
- Azure Native pulumi/pulumi-azure-native
- License
- Apache-2.0